如何将两个 awk 命令组合成一行

How to combine two awk commands into a single line

如何将以下两个 awk 命令合并为一行:

awk -F= '=="ID" { print  ;}' /etc/*release && awk -F= '=="VERSION_ID" { print  ;}' /etc/*release | xargs

我试图在一行中获取 linux 分发和 os,格式为分发+版本。 例如:ubuntu20.04、rhel7.5

您可以将每个部分捕获到一个变量中,然后在处理完文件后将它们打印出来:

awk -F= '=="ID"{id=}=="VERSION_ID"{vid=}END{print id,vid}' /etc/*release

bash:

source /etc/os-release; echo "$ID $VERSION_ID"

我假设您不想要引号(如您的示例所示),在这种情况下:

awk -F '["=]' '=="ID" {printf("%s,",)} =="VERSION_ID" {printf("%s\n",)}' < /etc/*release