我有一个这样的文件(制表符分隔),但很多行
1314 0 0 0 0 0 3 1321 - k63_1878003 1314 0 1314 6 171115067 64288422 64291057 4 12,131,75,1096, 0,12,143,218, 64288422,64288802,64289161,64289961,
我需要在每行的第14列前加string
,但保持其他所有内容相同。我可以在awk中这样做,还是在sed中会更好?
答案 0 :(得分:12)
使用awk
。 OFS
在输出中的字段之间打印选项卡:
awk 'BEGIN { OFS = "\t" } { $14 = "string" $14; print }' infile
答案 1 :(得分:1)
$ cat file.txt | sed 's/\(\([^\t]\+\t\)\{13\}\)/\1string/g'
换句话说:使用相同的文字和(([^ ] +){13})
替换string
(十三个非标签块,后跟标签)。
答案 2 :(得分:1)
这可能适合你(GNU sed):
sed 's/[^\t]*/string&/14' file
答案 3 :(得分:0)
您可以使用连接附加到AWK中的字段。例如:
$ echo "foo bar baz" | awk -vOFS=$'\t' '$2 = "quux" $2'
foo quuxbar baz
在你的情况下,你显然会使用$ 13字段。通过更改模式部分而不是操作,您只需替换字段的值并使用该行的默认打印操作。