結合したい 2 つの csv/text ファイルがあります。どちらにも同じ最初の行が含まれています。sed と cat を使用してマージされたファイルを生成する方法を見つけようとしていますが、最初の行のコピーは 1 つだけです。そして、私は構文で時間を過ごしています。どんな助けでも大歓迎です:-D! ありがとう、アンドリュー
1467 次
4 に答える
4
awk の別のオプション:
awk 'NR==FNR || FNR>1' file1.txt file2.txt .. fileN.txt
これにより、最初のファイルのすべての行、または後続のファイルの最初の行の後の任意の行が印刷されます。
于 2012-08-27T03:02:40.210 に答える
4
data1.txt
これにより、 filesとdata2.txt
in fileが結合されmerged.txt
、 の最初の行がスキップされますdata2.txt
。問題がなければ awk を使用します。
(cat data1.txt; awk 'NR>1' data2.txt) > merged.txt
awk は、行番号が 1 より大きいすべての行を file から file に追加data2.txt
しますmerged.txt
。
NR
処理中のファイルの現在の行番号を表す組み込みの awk 変数です。ブール式NR > 1
が true の場合、awk はその行を暗黙的に出力します。
そのままにしておくことを気にしない場合はdata1.txt
、2番目のファイル(最初の行を差し引いたもの)を追加して、これだけに減らすことができます:
awk 'NR>1' data2.txt >> data1.txt
于 2012-08-27T02:44:43.130 に答える
2
最も簡単な解決策は次のとおりです。
( cat file1.txt ; tail -n +2 file2.txt ) > file3.txt
これには、実行していることを明確に示すという利点があります。最初のファイル全体を印刷し、次に 2 番目のファイルの最初の行を除くすべてを印刷し、出力を 3 番目のファイルに書き込みます。
于 2012-08-27T03:29:28.913 に答える
1
1 行で解決 '1 d' は、file2 の最初の行を削除することを意味します
次のコマンドは、結果を file1 に追加します。
sed '1 d' file2 >> file1
于 2012-08-27T03:28:47.697 に答える