【问题标题】:awk command not working as expected when bash variable is used inside在内部使用 bash 变量时,awk 命令无法按预期工作
【发布时间】:2014-07-02 13:57:15
【问题描述】:

我尝试通过在 awk 命令中创建一个变量来在 awk 中使用 bash 变量,如下所示。但它似乎不起作用

b=hi
$ echo "hihello" |awk -v myvar=$b -F"$0~myvar" '{print $2}'

实际输出为:

<empty / nothing printed >

预期输出为:

你好

【问题讨论】:

  • 为什么在 -F 中包含 $0?
  • 什么是-F"$0~myvar"
  • 使用:awk -v myvar=$b '$0 ~ myvar {print $2}'
  • 这是什么魔法。

标签: linux bash unix awk cmd


【解决方案1】:

你为什么不这样做:

b=hi ; echo "hihello" | awk -F"$b" '{print $2}'
hello

【讨论】:

    【解决方案2】:

    试试下面的 awk 命令。将字段分隔符放在 BEGIN 块内。

    $ b=hi; echo "hihello" | awk -v myvar=$b  'BEGIN{FS=myvar}{print $2}'
    hello
    

    它将 myvar 变量的值设置为字段分隔符。因此,反过来打印第二列会给你字符串hello

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-11
      • 2021-05-06
      • 2014-11-28
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多