屏蔽选定的分隔列

时间:2017-09-07 17:04:33

标签: shell awk text-processing delimited-text

我希望使用shell脚本在某些列中使用X屏蔽某些数据。例如,我想屏蔽第一列,在新文件中只有X.不确定最好的方法来实现这一目标。

输入

DL1234, 454890, tall, A, A7, 1234, 457, Male, Active

所需输出

XXXXXX, 454890, tall, A, A7, 1234, 457, Male, Active

1 个答案:

答案 0 :(得分:2)

您可以将awk与逗号字段分隔符一起使用,并仅修改$1

s='DL1234, 454890, tall, A, A7, 1234, 457, Male, Active'

awk 'BEGIN{FS=OFS=","} {gsub(/./, "X", $1)} 1' <<< "$s"
XXXXXX, 454890, tall, A, A7, 1234, 457, Male, Active

修改

更新多个字段:

awk -v cols='1,3,7' 'BEGIN{FS=OFS=", "} {
n=split(cols, a, /,/); for (i=1; i<=n; i++) gsub(/./, "X", $a[i])} 1' <<< "$s"

XXXXXX, 454890, XXXX, A, A7, 1234, XXX, Male, Active

这里我们将要更新的列号列表作为命令行参数传递。