在 awk 语句中使用变量

在 awk 语句中使用变量

我有一个文件,正在对两个新文件中的某些列进行一些替换。现在效果很好。

我想将一些变量,如“X”(我用它替换列的字符)和“\036”分隔符、选择的列(如 $13、$6、$10、$5 等)放入如下所示的配置文件中。我不确定如何使用 awk 语句以最佳方式完成此任务。

配置:

export FIELD_DELIMITER="\036"
export MASK_COLUMN="$13"
export PRINT_COLUMN="$13, $6, $10, $5"

代码:

awk 'BEGIN{FS=OFS="\036"} {gsub(/./, "X", $13)} 1' $1 > $file_directory'/'$mask_filename$seperation$temp$DATA_SUFFIX
awk 'BEGIN{FS=OFS="\036"} {print$6,$10,$5,$13}' $1 > $file_directory'/'$mask_filename$seperation$temp1$DATA_SUFFIX

答案1

您可以awk使用参数从外部传递变量-v。您可以重复使用它来传递多个变量。

例如,对于脚本的第一行:

awk -v FIELD_DELIMITER='\036' -v WIPEOUT_CHARACTER='X' 'BEGIN{FS=OFS=FIELD_DELIMITER} {gsub(/./, WIPEOUT_CHARACTER, $13)} 1' $1 > $file_directory'/'$mask_filename$seperation$temp$DATA_SUFFIX

我检查了 GNU Awk 4.1.4,很高兴采用“\036”并将其解释为 ASCII RS(记录分隔符),所以我希望这也适合您。

相关内容