2017-09-07 33 views
1

我正在寻找使用shell脚本在某些列中使用X来掩盖某些数据。例如,我想掩盖第一列只有X在新文件中。不知道最好的方法来完成这一点。掩盖选定的分隔列

输入

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

所需的输出

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

回答

2

您可以使用awk用逗号SE字段分隔符和修改只$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 

这里我们传递列号的名单进行更新作为命令行参数。

+0

通常,可以使用期望列数的循环。 –

+0

@anubhava你好,它工作很好,谢谢!你有一个循环多列的例子吗? – Defcon

+0

@anubhava嗨,如果分隔符是'^^',解决方案会有所不同。这将是两个字符 – Defcon