我需要对进程加载的 .so 列表进行一些处理。我尝试用空格作为分隔符进行剪切,但没有成功。如何正确地将 cat /proc/PID/maps 的输出传输到 cut 中以获取最后一个字段?
答案1
获取最后一个字段通常有点棘手。选项有
awk '{print $NF}' /proc/PID/maps
(请注意,awk
返回带有条目的最后一个字段,0
对于 inode=0 条目,这将返回而不是空字段)
或通过选择中间的第一个字段来双反转一行:
rev /proc/PID/maps | cut -d' ' -f1 | rev
用于grep
匹配除空格之外的字符,然后匹配到行尾:
grep -o '[^ ]*$' /proc/PID/maps
答案2
您可以依靠maps
' 固定填充:
cut -c74- /proc/.../maps
(在 64 位平台上)。
提取所有情况下的最后一个字段,例如使用awk '{ print $NF }'
, 会产生误导,maps
因为行可以省略后备文件或完全使用(“[heap]”等)。
答案3
剪裁有点有限。如果你有 in file, file: ,12345 abcde 12438
你可以解析它来cat file | awk '{print $2}'
获取abcde
你可以通过管道或重定向的内容。