Linuxコマンドが複数のファイルを入力として使用する場合。コマンドをstdout
複数の部分に分割するコマンド/トリックはありますか?ファイルごとに1つずつ?これにより、どの行がどのファイルに属するかが明らかになります。
たとえば、、、、cat
などgrep
のsed
コマンドsort
がtail
複数のファイルを入力として取得する場合です。通常、結果を連続して印刷しますstdout
が、結果をさまざまな部分に分割したいと思います。各入力ファイルごとに1つずつ
結果をファイルに分割したり、必要な行数に分割したくありません。この問題。私が見つけた最も近いものは次のように説明されfind -print -exec command
ています。ここ。しかし、まだ私が望むものではありません。
file1
私のコマンドが、file2
とfile3
を入力として使用し、次のものを印刷するとします。
line1 of file1
line2 of file1
line3 of file1
line1 of file2
line2 of file2
line3 of file2
line1 of file3
line2 of file3
line3 of file3
出力形式を次のように指定したいので、ファイルで探している内容を観察すると、次のファイルに移動できます。
>>> file1 <<<
line1 of file1
line2 of file1
line3 of file1
----------------
>>> file2 <<<
line1 of file2
line2 of file2
line3 of file2
----------------
>>> file3 <<<
line1 of file3
line2 of file3
line3 of file3
よろしくお願いします。
ベストアンサー1
ファイルごとに並べ替える以外に行の順序に興味がない場合は、 sort を使用して、たとえば各行の前に ID を付けてこれを実行できます。
file1: line1
file2: line1
file1: line2
その後、次のようにパイプラインの結果を並べ替えることができます。
$ ( process-file1 & process-file2 & ); wait | sort
file1: line1
file1: line2
file2: line1
もちろん、この方法を使用して行番号を追加することもできます。その後、「sort -n」を使用します。
これを目的の正確な形式で処理するには、awkを使用して前の部分を削除してヘッダーに変換するスクリプトを作成できます。