需要在前三个字符的第三列中替换x。
input.txt中:
1,abnil,1234567890 2,asde,1472583691 3,fghtr,3697412587
output.txt的:
1,abnil,xxxxx67890 2,asde,xxxxx83691 3,fghtr,xxxxx12587
答案 0 :(得分:1)
使用sub()
函数的awk方式是:
awk -F, -v OFS=',' '1+sub(/^.{5}/,"xxxxx",$3)' file
你可以"覆盖"前5个字符:
awk -F, -v OFS=',' '$3="xxxxx" substr($3,6)' file
请注意,对于第二个cmd,如果第三列的长度小于5
,则它也将由xxxxx
设置。
两个单行都提供相同的输出。
答案 1 :(得分:0)
要求救援
替换任何字符(不仅仅是数字),你可以这样做
awk -F, -vOFS=, '{sub(/...../,"xxxxx",$3)}1'
如果您在该位置的字符少于5个,则不会进行替换。
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed -r 's/[^,]{1,5}([^,]*)/xxxxx\1/3' file
或者如果您愿意:
sed 's/[^,]\{1,5\}\([^,]*\)/xxxxx\1/3' file
这将替换xxxxx
行上第三组非逗号的前五个非逗号(或更少)。