0

次のレコード形式を持つ proc/smaps ファイルから rss 情報を抽出するための短い awk / sed スクリプトを探しています。

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
  • レコードをRSSサイズでソートできる場合の追加ボーナス(大きなチャンクが最初)

前もって感謝します、
アヴナー

4

2 に答える 2

1

選択基準についてはわかりませんが、これは実際のパスがリストされている場合にのみ一致します:

awk 'NF > 3 { f = $NF } $1 ~ /^Rss/ && f ~ /\// { print f, $2 }'

sort -nr -k2,22 番目の列で降順ソートを行うために追加します。

于 2012-10-29T09:54:10.727 に答える
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で始まる行を読み取る場合は、最後に言及したファイルの番号を覚えておいてください。それ以外の場合、ファイルについて言及されている場合は、それを覚えておいてください。ファイルの最後で、記憶されているペアを番号で並べ替えて印刷します。

于 2012-10-29T09:05:13.743 に答える