使用 awk 将数据排序为设定格式

使用 awk 将数据排序为设定格式

我在跑步

rpm -Vqf 

检查各种系统文件是否正确。以下是输出示例。

S.5....T.  c /etc/enviro
missing     /var/run/abrt
file /etc/bluetooth is not owned by any package

我希望输出如下所示,以便查看文件的完整路径。权限是否/ownr/checksum...正确、是否丢失或不属于包。

/etc/enviro|S.5....T.
/var/run/abrt|missing
/etc/bluetooth|not owned

我一直在看,awk但无法放弃它的正确性。

答案1

假设你的输出是总是正如您提供的三个示例所示,以下内容应该有效:

rpm -Vqf <arguments> | awk '/(\/[^/ ]+)+$/ {printf("%s|%s\n",$NF,$1);next} /is not owned/{printf("%s|not owned\n",$2)}'

此调用awk执行以下操作:

  • 如果一条线结束使用绝对文件路径(即 a/后跟任意数量的“非斜杠”(也没有空格),并且该模式可能重复),用于printf打印最后一条记录(= 空格分隔的字符串),这是filepath,后跟|,然后是第一条记录。然后,跳到下一个输入行执行(否则同一输入行可能会得到多个输出)。
  • 如果某一行包含字符串“is not owned”,则打印第二条记录(即文件路径假设输出总是读取 file <name> is not owned ...),后跟固定字符串“notowned”。

相关内容