屏蔽选定的分隔列

Mask out selected delimited columns

我希望使用 shell 脚本在某些列中用 X 屏蔽掉某些数据。例如,我想屏蔽掉第一列,使新文件中只有 X。不确定完成此操作的最佳方法。

输入

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

期望输出

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

您可以使用带逗号字段分隔符的 awk 并仅修改 </code>:</p> <pre><code>s='DL1234, 454890, tall, A, A7, 1234, 457, Male, Active' awk 'BEGIN{FS=OFS=","} {gsub(/./, "X", )} 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

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