私の問題は、サイズが0より大きいテキストファイル名の最後から行番号を抽出する必要があります。行番号の、私はマスターテキストファイルから行を抽出する必要があります。複数のテキストファイル名から行を抽出し、それらの行をテキストファイルから取り出します - Linux
以下のコマンドを使用して最初の手順を実行する方法を理解しました。これは、サイズが0より大きい.sh.eを含むすべてのファイルを見つけて、最後の数文字を引っ張ってjobIDとsedコマンドを削除します先頭の7文字をオフにします(これはもう少しエレガントに行うこともできます)。
ファイル名例:
Job_2017-09-25-08-50-28-ahill.sh.e1191.92
Job_2017-09-25-08-50-28-ahill.sh.e1191.102
Job_2017-09-25-08-50-28-ahill.sh.e1191.252
Job_2017-09-25-08-50-28-ahill.sh.e1191.301
find . -name "*.sh.e*" -type f -size +0c | grep -E -o ".e1191.{0,10}" | sed 's/^.\{7\}//'
92
102
252
301
私はその後、私に私の仕事の元のファイルの場所を指示するテキストファイルから行を抽出する必要があります。
これをsedまたはawkに渡して、マスターログを解析する際に問題があります。私は以下を試しました:
find . -name "*.sh.e*" -type f -size +0c | grep -E -o ".e1191.{0,10}" | awk (NR=sed s/^.\{7\}//) ../temp/files.2017-09-26.txt
find . -name "*.sh.e*" -type f -size +0c | grep -E -o ".e1191.{0,10}" | sed -n "$(sed 's/^.\{7\}//')p" ../temp/files.2017-09-26.txt
find . -name "*.sh.e*" -type f -size +0c | grep -E -o ".e1191.{0,10}" | awk "NR==$(sed 's/^.\{7\}//')" ../temp/files.2017-09-26.txt
すべては失敗してしまいます。私はExcelでこれを行うことができますが、頻繁に行う必要があるため、コマンドラインからこれを実行したいと考えています。
おかげ
「私は、私に私の仕事の元のファイルの場所を指示するテキストファイルから行を抽出する必要があります。」このフレーズは不明です。最終的な結果は何でしょうか? – RomanPerekhrest
最終結果は、../temp/files.2017-09-26.txtファイルから、行(s)X(最初のコマンドから得た)の文字列のリストです。元のWAVファイルへのパスの大きなリストです。 –
となるので、スクリプトは '/ temp/files.2017-09-26.txt'ファイルを数字' 92'、 '102'などで検索し、それらの数字を含む一致する行を出力する必要があります。 – RomanPerekhrest