我正在寻找一个简短的awk / sed脚本来从proc / smaps文件中提取rss信息,该文件具有以下记录格式:
77f73000-77f74000 rw-s 00000000 fd:00 230116 /var/lib/mylib.so
Size: 4 kB
Rss: 4 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 4 kB
Private_Dirty: 0 kB
我正在寻找的输出是:
/var/lib/mylib.so 4
提前致谢,
阿夫纳
答案 0 :(得分:1)
不确定您的选择标准,但这仅在列出实际路径时匹配:
awk 'NF > 3 { f = $NF } $1 ~ /^Rss/ && f ~ /\// { print f, $2 }'
附加sort -nr -k2,2
以对第二列进行降序排序。
答案 1 :(得分:0)
Perl解决方案:
perl -ne '
if (/^Size:\s+([0-9]+)/) {
$h{$f} = $1
} elsif (m{\s(/.*)$}) {
$f = $1
}
}{
print "$_\t$h{$_}\n" for sort { $h{$a} <=> $h{$b} } keys %h
' input.txt
工作原理:如果读取以 Size 开头的行,请记住上次提到的文件中的数字。否则,如果提到文件,请记住它。在文件末端,按编号对记住的对进行排序并打印出来。