我有一个像这样的文件
1 CC AAA
1 Na AAA
1 Na AAA
1 Na AAA
1 Na AAA
1 CC BBB
1 Na BBB
1 Na BBB
1 xa BBB
1 CC CCC
1 Na CCC
1 da CCC
我想删除第2列,然后使用"01"
替换AAA
,"02"
替换BBB
,依此类推整个文件。最后输出应该是,
1 01 AAA
1 01 AAA
1 01 AAA
1 01 AAA
1 01 AAA
1 02 BBB
1 02 BBB
1 02 BBB
1 02 BBB
1 03 CCC
1 03 CCC
1 03 CCC
我没有任何线索让这个工作。请尽可能帮助我。在每个cc中,新变量开始。从AAA
到BBB
的内容只能通过第二列中的CC跟踪。
答案 0 :(得分:2)
在awk
中执行此操作的一种方法:
awk '$3!=a&&NF{a=$3;x=sprintf("%02d",++x);print $1,x,$3;next}$3==a&&NF{print $1,x,$3;next }1' inputFile
答案 1 :(得分:1)
这是使用awk
的一种方式:
awk '$3 != r { ++i } { $2 = sprintf ("%02d", i) } { r = $3 }1' OFS="\t" file
我已将OFS设置为tab-char,但您可以选择自己喜欢的内容。结果:
1 01 AAA
1 01 AAA
1 01 AAA
1 01 AAA
1 01 AAA
1 02 BBB
1 02 BBB
1 02 BBB
1 02 BBB
1 03 CCC
1 03 CCC
1 03 CCC
答案 2 :(得分:0)
似乎你想要:
awk '$2=="CC" { a+=1 } {$2=sprintf("%02d",a)} 1' input