
unrarコマンドからファイル名を詳細に取得し、コマンドラインから削除しようとしています。
unrar コマンドの出力は次のようになります。
Extracting BucketSort.cpp OK
Extracting BucketSort.vcxproj OK
Extracting BucketSort.vcxproj.filters OK
Extracting BucketSort.lastbuildstate OK
Extracting BucketSort.log OK
Extracting BucketSort.obj OK
Extracting BucketSort.pch OK
これまで、私は次のawkコマンドを思いつきました。
unrar e BucketSort.rar | awk '{if (match($0,/Extracting\s*([\w|.]+)\s*OK/,m)) print m[0]}'
しかし、何も印刷されません。一致するように「抽出中」という単語だけを残しておくと、抽出されたすべてのファイルに対して「抽出中」と表示されます。だから正規表現で書かれた内容を認識できませんが、それが何かはわかりません。この表現の問題は何ですか?
PS:正規表現を確認できますここ。
答え1
これにより、トリックを実行できます。
unrar e BucketSort.rar | awk '/^Extracting/ {print $2}'