【问题标题】:awk behaves differently on command-line than from scriptawk 在命令行中的行为与在脚本中的行为不同
【发布时间】:2012-04-25 01:18:59
【问题描述】:

我希望这会放置“1”,但它会输出“1 2 3”

回声“1 2 3” | awk "{ 打印 $1 }"

但是,当从文件运行 awk 代码时,它确实可以工作(其中 awkscript.awk 包含 {print $1}):

echo "1 2 3" | awk -f awkscript.awk

【问题讨论】:

    标签: awk


    【解决方案1】:

    你应该使用:

    echo "1 2 3" | awk  '{ print $1 }'
    

    然后它也会从命令行打印1。那是 ' 而不是 awk 命令中的 "

    解释: 使用双引号 " 变量 $1 会预先展开,因为这只是一个空字符串,所以你的命令实际上变成了这样:

    echo "1 2 3" | awk '{ print }'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-28
      • 2015-06-27
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多