我有一个文件,其标签'\t'
像这样分开
8 263 722016-8-263-2016_02_07_03:00:18-544992 Text1 4
8 722016-8--2016_02_07_03:00:18-307392 Text2 1
8 220 722016-8-220-2016_02_07_03:00:18-488656 Text3 3
8 727 722016-8-727-2016_02_07_03:00:18-786195 Text4 1
我必须修改第3列的内容。我可以像第awk '{ print $3 }' file.txt
一样获得第3列。
722016-8-263-2016_02_07_03:00:18-544992
Text2
722016-8-220-2016_02_07_03:00:18-488656
722016-8-727-2016_02_07_03:00:18-786195
但是在第2行第2列缺失,我在输出中得到Text2
而不是722016-8--2016_02_07_03:00:18-307392
。所以我想从最后一列获得第3列并插入" Test1-
"在该专栏的开头。上述文件的预期输出为 -
8 263 Test1-722016-8-263-2016_02_07_03:00:18-544992 Text1 4
8 Test1-722016-8--2016_02_07_03:00:18-307392 Text2 1
8 220 Test1-722016-8-220-2016_02_07_03:00:18-488656 Text3 3
8 727 Test1-722016-8-727-2016_02_07_03:00:18-786195 Text4 1
答案 0 :(得分:2)
你可以使用这个awk:
awk 'BEGIN{FS=OFS="\t"} NF==4{$1=$1 "\t"} {$(NF-2) = "Test1-" $(NF-2)} 1' file
<强>输出:强>
8 263 Test1-722016-8-263-2016_02_07_03:00:18-544992 Text1 4
8 Test1-722016-8--2016_02_07_03:00:18-307392 Text2 1
8 220 Test1-722016-8-220-2016_02_07_03:00:18-488656 Text3 3
8 727 Test1-722016-8-727-2016_02_07_03:00:18-786195 Text4 1