awkのパターンマッチング

awkのパターンマッチング

fileコマンドの出力を表示するためにls -laの出力を変更しようとしています。次のコマンドはこの目的に適しています。

find /opt -type f | xargs ls -let | awk 'BEGIN { OFS="\t" } { sprintf("file \"%s\"", $10) | getline type; print type,$1,$3,$4 }' | tr ":" "\t"

lddこれで、ファイル形式の出力が "ELF.*execuatble"パターンと一致する場合は、コマンド出力(カンマ区切り)を表示するように変更したいと思います。 awkで使用されている一致キーワードのさまざまな組み合わせを試して、一致が成功すると実行しましたが、役に立ちませiflddでした。

可能ですか?

オペレーティングシステムはSolarisで、kshを使用します。

ベストアンサー1

awkはパターンマッチングを提供します

awk '/ELF*.executable/ { ... }'

編集:あなたの場合:

find /opt -type f | xargs ls -let | awk 'BEGIN { OFS="\t" } /ELF*.executable/ { sprintf("file \"%s\"", $10) | getline type; print type,$1,$3,$4 }' | tr ":" "\t"

おすすめ記事