[英]Remove a line from a csv file bash, sed, bash
我正在寻找一种方法来删除多个csv文件中的行,在bash中使用sed,awk或任何适当的文件以0结尾。
所以有多个csv文件,它们的格式是:
EXAMPLEfoo,60,6
EXAMPLEbar,30,10
EXAMPLElong,60,0
EXAMPLEcon,120,6
EXAMPLEdev,60,0
EXAMPLErandom,30,6
因此该文件将被修改为:
EXAMPLEfoo,60,6
EXAMPLEbar,30,10
EXAMPLEcon,120,6
EXAMPLErandom,30,6
我能看到的一个问题是区分以零结尾的双位数和0本身。
那么任何想法?
使用你的文件,这样的?
$ sed '/,0$/d' test.txt
EXAMPLEfoo,60,6
EXAMPLEbar,30,10
EXAMPLEcon,120,6
EXAMPLErandom,30,6
对于这个特殊问题, sed
是完美的,正如其他人所指出的那样。 但是, awk
更灵活,即您可以在任意列上进行过滤:
awk -F, '$3!=0' test.csv
这将打印整行第3列不为0。
使用sed仅删除以“,0”结尾的行:
sed '/,0$/d'
你也可以用awk,
$ awk -F"," '$NF!=0' file
EXAMPLEfoo,60,6
EXAMPLEbar,30,10
EXAMPLEcon,120,6
EXAMPLErandom,30,6
这只是说检查最后一个字段为0
,如果找到它则不打印。
sed '/,[ \t]*0$/d' file
我倾向于sed,但也有一个egrep(或:grep -e)-solution:
egrep -v ",0$" example.csv
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.