Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 删除awk中的重复标题_Unix_Awk_Sed_Cat_Gawk - Fatal编程技术网

Unix 删除awk中的重复标题

Unix 删除awk中的重复标题,unix,awk,sed,cat,gawk,Unix,Awk,Sed,Cat,Gawk,我使用cat组合了几个文件,它们都有相同的标题。我是否可以保留头的1st引用,并删除连接文件中的后续头 谢谢 例如: FirstName, LastName, Phone, Zip (data) (data) (data) FirstName, LastName, Phone, Zip (data) (data) (data) 您可以这样做: cp file1 result tail -q -n +2 file2 file3 file4 >> result 也就是说,从file1

我使用
cat
组合了几个文件,它们都有相同的标题。我是否可以保留头的
1st
引用,并删除连接文件中的后续头

谢谢

例如:

FirstName, LastName, Phone, Zip
(data)
(data)
(data)
FirstName, LastName, Phone, Zip
(data)
(data)
(data)
您可以这样做:

cp file1 result
tail -q -n +2 file2 file3 file4 >> result
也就是说,从file1的全部内容开始,然后从每个文件的第2行开始附加其他文件。这样,您就不需要尝试查找额外的头并在以后删除它们

如果您愿意,这里有另一个相同的公式:

head -1 file1 > result
tail -q -n +2 file1 file2 file3 file4 >> result
试试这个:

sed -e '2,$s/FirstName, LastName, Phone, Zip//g' -e '/^$/d' Yourfile.txt
您可以用任何标题替换“FirstName、LastName、Phone、Zip”。从第二行到文件末尾,它将删除页眉图案,然后用/^ $/d‘< /p>< p>删除空行:这样做:

sed '1h;2,$G;s/^\(.*\)\n\1$//;/./P;d' filename

这是一个
awk
版本。它将跳过名为
的所有行,但行
1

awk 'NR>1 && /^FirstName/ {next}1' file
FirstName, LastName, Phone, Zip
(data)
(data)
(data)
(data)
(data)
(data)
如果标题行没有改变,我们需要一个模式来遵循。

awk-way

awk '!a[$0];NR==1{a[$0]++}' file

删除头的工作,虽然它没有删除空白空间。谢谢你顺便说一句。这很有效,虽然我忘了提到我有67个文件需要连接,但如果使用它,对我来说会很乏味。顺便说一句,谢谢你。如果你觉得答案有用且有趣,你可以投它一票。:)@potong:我在发布之前就尝试过这种方法,但没有成功——然后我看到了你的评论,又尝试了一次,避免了我在决定反对这种方法后注意到的几个陷阱,现在它成功了!更简单,短一个字符,捕捉效果好。