$ sudo lsof -u t | grep -i "\.pdf"
evince 1788 t 37r REG 8,4 176328 134478 /home/t/some/path1/white space/string1 + string2 string3.pdf
evince 3737 t 36r REG 8,4 1252636 6692680 /home/t/some/path2/white space/string5 string3.pdf
2番目の列(プロセスのpid)のみを抽出するにはどうすればよいですか?
9番目の列(ファイルパス名)のみを抽出する方法は? (パス名には、Linuxおよびext4ファイルシステムで許可されているすべての文字を含めることができます。)
私の本当の命令は
$ sudo lsof -u t | grep -v "wineserv" | grep REG | grep "\.pdf" | grep "string"
wineserv
最初の列「COMMAND」ではなく、5番目の列「TYPE」がありREG
、9番目の列「NAME」に.pdf
含まれているレコードを検索しますstring
。
bash、awk、またはPythonソリューションを好みます(Perlも可能ですが、Perlがわからないので正しいことを確認したり、後で修正することはできません)。
ありがとうございます。
ベストアンサー1
正規表現を使用してください。
$ ... | perl -nlE '/.*? (\d+).*?(\/.*)/ and print("$1 ; $2")'
1788 ; /home/t/some/path1/white space/string1 + string2 string3.pdf
3737 ; /home/t/some/path2/white space/string5 string3.pdf