我有一个文件,我想将特定字符添加到特定行中的多个特定列。对于eaxample,我的文件是
shirts pants tshirts greet
100000 11111 1200000 131313
123456 15823 1542358 752256
我想在第二行之后添加一个卖给所有列的字符(可能有多列,未知)到第一行。我可以使用
选择第一行和列NR<2 and NF>2
但是如何附加到每个字段?我希望我的回答是
shirts pants soldtshirts soldgreet
100000 11111 1200000 131313
123456 15823 1542358 752256
答案 0 :(得分:2)
您使用NR<2
和NF>2
是正确的。这样的事情可以解决问题:
$ awk 'NR==1{for (i=3; i<=NF; i++) $i="sold"$i}1' a
shirts pants soldtshirts soldgreet
100000 11111 1200000 131313
123456 15823 1542358 752256
在NR==1
(第一行)上,它从第3个字段循环到最后一个字段,每个字段附加“已售出”。然后1
评估为真,并在所有情况下打印整行。
答案 1 :(得分:2)
这可能适合你(GNU sed):
sed -i '1s/\S\+/sold&/3g' file
答案 2 :(得分:0)
awk 'NR==1{x=$1"\t"$2;for(i=3;i<=NF;i++)x=x"\tsold"$i;$0=x}1' file