私は特定の形式のすべてのファイルを検索するためにfindコマンドを使用していますが、そのコマンドはゴールデンです。その出力をawkコマンドにパイプしているので、最後のアンダースコアをフィールド区切り文字として使用したいと思います。問題は、ファイルが含まれているパスによっては、事実の前に1つまたは2つのアンダースコアが存在する可能性があることです。
find . -regex ".*prob[0-9]*_.*" | awk 'BEGIN { FS = "_.*$" } { print $1 " " $2 }'
フィールドセパレータの正規表現の何が問題になっているのかわかります。アンダースコアで区切ると考えられ、それに続くものはすべて、1文字だけを指定するためにあります。さらに、文字の最後の出現時にフィールドセパレータを具体的に使用するにはどうすればよいですか。
これは、以前に尋ねた質問の拡張です。 エコーを配管するときにStdOutへの出力を抑制します。
私が取得するファイルは一般的に次のようなものですが、ディレクトリにもアンダースコアを付けることができるという問題があります:/ the / directory / probXXXXX_XX
ここで、Xは任意の整数です。
私が考えていた回避策は、すべてのアンダースコアで区切り、次にすべての列を印刷することです...しかし、上記の方法で機能させたいと思います。