在下面的示例中,如何删除以逗号分隔的 csv 文件中以“H”开头的整行,
H,NYR,257,10,11,000, TESTING,055,000,2023-05-10
D,NYR,257,10,11,000, TESTING,055,000,2023-05-10
H,NYR,257,10,11,000, TESTING,055,000,2023-05-10
F,NYR,257,10,11,000, TESTING,055,000,2023-05-10
H,NYR,257,10,11,000, TESTING,055,000,2023-05-10
D,NYR,257,10,11,000, TESTING,055,000,2023-05-10
H,NYR,257,10,11,000, TESTING,055,000,2023-05-10
D,NYR,257,10,11,000, TESTING,055,000,2023-05-10
答案1
这不需要sed
或awk
。它很简单,grep -v '^H'
可以将输出重定向到另一个文件或根据需要将其通过管道传输到另一个程序。
如果您需要就地编辑文件,可以使用sed -i
或grep
& 。sponge
例如
sed -i -n '/^H/!p' file.csv
或者
sed -i '/^H/d' file.csv
或者
grep -v '^H' file.csv | sponge file.csv
就我个人而言,我一般不使用就地编辑,我更喜欢使用单独的文件,因为磁盘空间充足且便宜,但信息一旦删除就无法恢复。
如果您需要处理整个文件awk
,只需在脚本顶部添加如下规则:
/^H/ { next };
这将跳过所有以“H”开头的行。所有其他行将由后续 awk 规则照常处理。
同样,您可以next if /^H/;
在 perl 脚本中使用来跳过以“H”开头的行。