フルパスを含むファイルがあります。
/home/usr/file_name_delimited_by_underscore_123.txt
/home/usr/another_example_456.rar
拡張子なしでパスからファイル名を印刷し、その横にある最後のファイル名を印刷したいと思います_
。
出力:
file_name_delimited_by_underscore_123 123
another_example_456 456
パイプされたawkコマンドを使用して目的の出力を取得する方法を見つけました。
cat file | awk -F[/.] '{print $(NF-1)}' | awk -F_ '{print $0" "$NF}'
パイプを使わずにこれを達成する方法はありますか?
私の質問は、awkで解析されたフィールドでアクションを実行できますか?
ご協力ありがとうございます。
ベストアンサー1
はい、現場では好きなように何でもできます。たとえば、
$ cat file | awk -F[/.] '{n = split($(NF-1),a,/_/); print $(NF-1)" "a[n]}'
file_name_delimited_by_underscore_123 123
another_example_456 456
もちろん、これは必要ではありません。ファイルを直接読み取るcat
ことができます。デフォルトの出力フィールド区切り文字は空白なので、結果を文字列連結ではなく別々の出力フィールドとして作成する方が慣用的です。awk
OFS
awk -F[/.] '{n = split($(NF-1),a,/_/); print $(NF-1), a[n]}' file