gpt4 book ai didi

awk - 正则表达式从一个段落中提取多个单词

转载 作者:行者123 更新时间:2023-12-05 02:27:12 25 4
gpt4 key购买 nike

$ echo 文件.txt

NAME="Ubuntu"                           <--- some of this
VERSION="20.04.4 LTS (Focal Fossa)" <--- and some of this
ID=ubuntu
ID_LIKE=debian
VERSION_ID="20.04"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal

我想要这个:Ubuntu 20.04.4 LTS

我用两个命令管理:

echo "$(grep '^NAME="' ./file.txt | sed -E 's/NAME="(.*)"/\1/') $(grep '^VERSION="' ./file.txt | sed -E 's/VERSION="(.*) \(.*"/\1/')"

我如何使用 grep/sed 或 perl 将其简化为一个命令?

最佳答案

使用您显示的示例尝试遵循 awk 代码。

awk -F'"' '/^NAME="/{name=$2;next} /^VERSION="/{print name,$2}' Input_file

解释:

  • 将此处所有行的字段分隔符设置为 "
  • 如果行以 Name= 开头,则检查条件,然后创建具有第二个字段的变量名称。 next 将跳过 awk 程序的所有进一步语句,它们不需要执行。
  • 然后检查一行是否从 VERSION= 开始,然后根据要求在此处打印名称和第二个字段。

关于awk - 正则表达式从一个段落中提取多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73368824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com