繁体   English   中英

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

[英]how to remove both first and last line of csv file using sed

我可以删除以myfile开头的csv文件的第一行,并使用以下命令合并它们:

sed 1d myfile*.csv > myfile_merged.csv

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

我试过了:

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

但是得到错误:

sed: can't read $d: No such file or directory

问题是此命令:

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

sed -i内联替换 )后面不需要参数,否则它将被视为SUFFIX以创建用于内联替换的备份。

您需要的是以下gnu sed命令:

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

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

您可能想做的是:

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兼容(外壳和sed部件)。 只要输入可以使用sed逐行解析,它也不关心您的输入是CSV还是其他格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM