屏蔽选定的分隔列
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
这里我们传递要更新的列号列表作为命令行参数。
我希望使用 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
这里我们传递要更新的列号列表作为命令行参数。