[英]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.