【问题标题】:Append a character to specific multiple columns in specific rows将字符附加到特定行中的特定多列
【发布时间】:2013-11-15 12:42:03
【问题描述】:

我有一个文件,我想将特定字符添加到特定行中的多个特定列。例如,我的文件是

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

【问题讨论】:

    标签: bash shell scripting sed awk


    【解决方案1】:

    您对NR&lt;2NF&gt;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(第一行)上,它从第三个字段循环到最后一个字段,并在每个字段后面附加“已售出”。然后1 评估为真并在所有情况下打印整行。

    【讨论】:

      【解决方案2】:

      这可能对你有用(GNU sed):

      sed -i '1s/\S\+/sold&/3g' file
      

      【讨论】:

        【解决方案3】:
        awk 'NR==1{x=$1"\t"$2;for(i=3;i<=NF;i++)x=x"\tsold"$i;$0=x}1' file
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-24
          • 1970-01-01
          • 2016-10-30
          • 2020-12-01
          • 2015-01-17
          • 2013-03-27
          • 1970-01-01
          • 2018-06-18
          相关资源
          最近更新 更多