【问题标题】:awk print value without quote signawk 打印不带引号的值
【发布时间】:2021-01-16 20:45:19
【问题描述】:

我有这个价值

option 'staticip' '5.5.5.1'

我只想打印不带引号的5.5.5.1。我用过

cat /etc/filename | grep staticip | awk '{print $3}'

但结果是'5.5.5.1'

【问题讨论】:

    标签: linux bash centos


    【解决方案1】:

    或者,您可以使用tr 删除违规字符:

    cat /etc/filename | grep staticip | awk '{print $3}' | tr -d \'
    

    【讨论】:

      【解决方案2】:

      您可以使用 awk 的 gsub() 函数将引号更改为空。

      awk '{gsub(/'"'"'/, "", $3); print $3}'
      

      注意这真的是gsub(/'/, "", $3)。丑陋来自于需要将引号粘合在一起。

      【讨论】:

      • @skwllsp 修复了转义。当然丑了:(
      【解决方案3】:
      awk '$2=="staticip" && $0=$4' FS="'"
      

      结果

      5.5.5.1

      【讨论】:

        【解决方案4】:

        您可以使用 awks substr 函数或将其传递给 cut 命令。我让你阅读 awk substr 的手册页。

        【讨论】:

          【解决方案5】:

          要从 awk 输出中删除 ',您可以使用 sed "s/^'//;s/'$//" 此命令仅在输出行的开头和结尾删除 ' ,并且不会像使用 awk 那样繁重,如果使用 tr 也不会那么通用。 awk 在内存中要大得多,而 tr 从输出中删除所有并非总是想要的东西。

          【讨论】:

            猜你喜欢
            • 2021-08-05
            • 1970-01-01
            • 2019-10-17
            • 2020-03-01
            • 1970-01-01
            • 1970-01-01
            • 2018-10-25
            • 1970-01-01
            • 2019-06-13
            相关资源
            最近更新 更多