如何使用sed删除csv文件的第一行和最后一行

时间:2017-11-14 04:45:44

标签: bash csv sed

我可以删除以Welcome to Reverse-the-words Enter your sentence, word, or phrase I love science Your phrase with all of the words reversed is I evol ecneics 开头的第一行csv文件并使用以下方法合并它们:

myfile

我还要删除csv文件的最后一行。

我试过了:

sed 1d myfile*.csv > myfile_merged.csv

但是得到错误:

sed 1d -i '$d' myfile*.csv > myfile_merged.csv

2 个答案:

答案 0 :(得分:4)

问题是这个命令:

sed 1d -i '$d' myfile*.csv > myfile_merged.csv

-ised内联替换)之后您不需要参数,否则会被视为SUFFIX来为内联替换创建备份

您需要的是gnu sed命令:

sed -i '1d;$d' myfile*.csv

这将删除每个匹配文件中的第一行和最后一行并将其保存到位。

答案 1 :(得分:3)

你可能要做的是:

sed -e '1d' -e '$d' myfile*.csv > merged.csv

但这不起作用,因为它告诉sed删除所有文件的第一行和最后一行,而不是EACH文件。换句话说,你将剥离第一个文件的第一行,以及最后一个文件的最后一行......就是这样。

要单独处理每个文件,您可能需要单独处理每个文件。 :)

for f in myfile*.csv
    sed -e '1d;$d' "$f"
done > merged.csv

请注意,虽然这将在bash中运行,但它也兼容POSIX(shell和sed部分)。并且它不关心您的输入是CSV还是任何其他格式,只要它可以使用sed逐行解析。