我有一个输入文件,我需要将第3列(“)的第一个字符替换为(”S)
File1中:
1 2 "45554323" p b
2 2 "34534567" f a
3 3 "76546787" u b
2 4 "56765435" f a
结果:
1 2 "S45554323" p b
2 2 "S34534567" f a
3 3 "S76546787" u b
2 4 "S56765435" f a
我试过
awk '{gsub(substr($3,0,1),"\"S"); print}'
但它会在$3
开始和结束时为S
"S45554323"S
提供{{1}}。你能给我一个解决方案吗?
答案 0 :(得分:3)
尝试:
awk 'BEGIN { OFS = "\t"; } { sub( /[[:digit:]]/, "S", $3 ); print }' infile
产量:
1 2 "S5554323" p b
2 2 "S4534567" f a
3 3 "S6546787" u b
2 4 "S6765435" f a
或sed
:
sed -e 's/\("\)[0-9]/\1S/' infile
答案 1 :(得分:0)
Perl解决方案:
perl -naE '$F[2] =~ s/"/"S/; say join "\t", @F'
如果输出中需要使用空格,则可能需要将选项卡\t
替换为空格。
答案 2 :(得分:0)
另一种解决方案:
awk '{sub(" \"","\"S"); print}' file
结果-1:
awk '{sub(" \"","\"S"); print}' file
1 2 "S45554323" p b
2 2 "S34534567" f a
3 3 "S76546787" u b
2 4 "S56765435" f a
结果-2:
awk '{sub(" \".","\"S"); print}' file
1 2 "S5554323" p b
2 2 "S4534567" f a
3 3 "S6546787" u b
2 4 "S6765435" f a