将字符附加到特定行中的特定多列

时间:2013-11-15 12:42:04

标签: bash shell scripting sed awk

我有一个文件,我想将特定字符添加到特定行中的多个特定列。对于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

3 个答案:

答案 0 :(得分:2)

您使用NR<2NF>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