我在跑步
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”。