我有两个csv / text文件,我想加入。两者都包含相同的第一行。我试图弄清楚如何使用sed和cat来生成合并文件,但只有第一行的一个副本。而且我有时间使用语法。任何帮助将不胜感激:-D! 谢谢, 安德鲁
答案 0 :(得分:4)
这将合并文件data1.txt
中的文件data2.txt
和merged.txt
,跳过data2.txt
的第一行。如果你对它好的话,它使用awk:
(cat data1.txt; awk 'NR>1' data2.txt) > merged.txt
awk将所有行添加行号> 1从文件data2.txt
到文件merged.txt
。
NR
是一个内置的awk变量,代表正在处理的文件的当前行号。如果布尔表达式NR > 1
为true,则awk会隐式打印该行。
如果你不关心保持data1.txt
完整,你可以只追加你的第二个文件(减去它的第一行)并减少到这个:
awk 'NR>1' data2.txt >> data1.txt
答案 1 :(得分:4)
awk的另一个选择:
awk 'NR==FNR || FNR>1' file1.txt file2.txt .. fileN.txt
这将打印第一个文件中的所有行,或第一行之后的后续文件中的任何行。
答案 2 :(得分:2)
我会说最直接的解决方案是:
( cat file1.txt ; tail -n +2 file2.txt ) > file3.txt
它的优点是清楚地说明你正在做什么:打印整个第一个文件,然后打印除第二个文件的第一行以外的所有文件,将输出写入第三个文件。
答案 3 :(得分:1)
用一条线解决了 '1 d'表示删除file2中的第一行
以下命令会将结果附加到file1
sed '1 d' file2 >> file1