我有一个文件,正在对两个新文件中的某些列进行一些替换。现在效果很好。
我想将一些变量,如“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(记录分隔符),所以我希望这也适合您。