【问题标题】:capturing words between double quotes in awk在 awk 中捕获双引号之间的单词
【发布时间】:2019-08-10 10:43:12
【问题描述】:

我正在尝试打印我的 Linux 发行版的名称。我的发行版的cat /etc/os-release 的输出是:

NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="0;36"
HOME_URL="https://www.archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux

现在我想从第二行获取Arch Linux。我使用了这个命令:

cat /etc/os-release | awk '/PRETTY_NAME=\".+\"/ {print $1}'

但这会打印PRETTY_NAME="Arch

如何从这一行中获取单词(包括空格)?

【问题讨论】:

    标签: regex linux awk


    【解决方案1】:

    将字段分隔符设置为双引号 -F'"' 以从输出中删除引号。

     awk -F'"' '/^PRETTY_NAME=/{print $2}' /etc/os-release
    

    【讨论】:

    • 这包括双引号,但我想我可以将它传递给tr -d '"'。谢谢。
    • 是,或者将 awk 字段分隔符更改为 "
    • 你也会想失去useless cat
    • 你不需要tr,Awk 可以用gsub("\"","")做到这一点
    • /^PRETTY_NAME=/{print $2} 或类似的会更健壮。
    猜你喜欢
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    相关资源
    最近更新 更多