0

私はここで構文に時間を費やしています。さまざまなコンテンツのファイルが3つありますfile1file2file3(100行以上)。それらをマージしようとしていますが、各ファイルの最初の行のみをマージする必要があります。重要なのは、1行のbashコードを使用してそれを行うことです sed -n 1p file1 file2 file3。file1の最初の行のみを返します。

4

4 に答える 4

6

You might want to try head -n1 -q file1 file2 file3.

于 2013-03-20T16:45:13.590 に答える
2

マージが連結または結合を意味するかどうかは明らかではありませんか?

awk結合する(並べて印刷されたファイルの各最初の行) :

$ awk 'FNR==1{printf "%s ",$0}'  file1 file2 file3
1 2 3

awk連結することにより(ファイルの最初の各行が次々に印刷されます)

$ awk 'FNR==1'  file1 file2 file3
1
2
3
于 2013-03-20T16:46:43.233 に答える
2

themelheadの回答で説明されているように使用することをお勧めします。ただし、使用を主張する場合は、すべてのファイルを単純に渡すことはできません。それらは暗黙的に連結され、各ファイルの最初の行がそれぞれ何であるかに関する情報が失われるためです。したがって、本当に sed で実行したい場合は、bash が必要です。sed

for f in file1 file2 file3; do sed -n 1p "$f"; done
于 2013-03-20T16:51:31.507 に答える
1

read組み込みコマンドを使用して、外部プロセスの呼び出しを回避できます。

for f in file1 file2 file3; do read l < $f; echo "$l"; done > merged.txt
于 2013-03-20T19:20:54.233 に答える