【问题标题】:Awk adding constant valuesawk 添加常量值
【发布时间】:2013-09-30 14:49:16
【问题描述】:

我在文本文件中有数据,例如 val1,val2 多行 我想把它改成 1,val1,val2,0,0,1

我尝试在 awk(solaris) 中使用 print 语句来添加常量,但它不起作用。

正确的做法是什么?


(来自 cmets)这是我尝试过的

awk -F, '{print "%s","1,"$1","$2"0,0,1"}' test.txt 

【问题讨论】:

  • 你能展示你的尝试吗?也许你就快到了。
  • awk -F, '{print "%s","1,"$1","$2"0,0,1"}' test.txt
  • @TejasJoshi 尝试删除"%s",
  • 请编辑您的问题以包含您的示例代码。否则,我们将在问题主体中的信息集中进行长时间的讨论。祝你好运。
  • Solaris 上有多个 awk 版本。不幸的是,默认的是 /usr/bin/awk ,它是旧的、损坏的 awk,绝对不能使用它,这样如果你尝试使用它就会给你带来问题。在 Solaris 上使用 /usr/xpg4/bin/awk 或 nawk 代替(或者,安装 gawk 更好)。

标签: shell awk solaris


【解决方案1】:

根据您发布的命令,稍作改动:

$ awk -F, 'BEGIN{OFS=FS} {print 1,$1,$2,0,0,1}' file
1,val1,val2,0,0,1

或者使用printf(我更喜欢print):

$ awk -F, '{printf "1,%s,%s,0,0,1", $1, $2}' file
1,val1,val2,0,0,1

【讨论】:

    【解决方案2】:

    要在每一行前加上常量1 并附加0,0,1,只需这样做:

    $ awk '{print 1,$0,0,0,1}' OFS=, file
    1,val1,val2,0,0,1
    

    一种惯用的方式是:

    $ awk '$0="1,"$0",0,0,1"' file
    1,val1,val2,0,0,1
    

    【讨论】:

      【解决方案3】:

      使用sed:

      sed 's/.*/1,&,0,0,1/' inputfile
      

      例子:

      $ echo val1,val2 | sed 's/.*/1,&,0,0,1/'
      1,val1,val2,0,0,1
      

      【讨论】:

        猜你喜欢
        • 2019-02-21
        • 1970-01-01
        • 2017-05-06
        • 2017-01-20
        • 2011-11-03
        • 1970-01-01
        • 2015-07-01
        • 1970-01-01
        • 2014-03-05
        相关资源
        最近更新 更多