从csv文件bash、sed、bash中删除一行

从csv文件bash、sed、bash中删除一行,bash,command-line,sed,Bash,Command Line,Sed,我正在寻找一种方法来删除多个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 EXAMPLEran

我正在寻找一种方法来删除多个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结尾的两位数和0本身


有什么想法吗?

使用你的文件,像这样的东西

$ sed '/,0$/d' test.txt 
EXAMPLEfoo,60,6 
EXAMPLEbar,30,10 
EXAMPLEcon,120,6 
EXAMPLErandom,30,6

使用sed仅删除以“0”结尾的行:

您也可以使用awk

$ awk -F"," '$NF!=0' file
EXAMPLEfoo,60,6
EXAMPLEbar,30,10
EXAMPLEcon,120,6
EXAMPLErandom,30,6

这只是说检查
0
的最后一个字段,如果找到了,就不要打印。

对于这个特殊问题,
sed
是完美的,正如其他人所指出的。但是,
awk
更灵活,即您可以对任意列进行筛选:

awk -F, '$3!=0' test.csv

这将打印整行,因为第3列不是0。

我倾向于使用sed,但也有一个egrep(或:grep-e)-解决方案:

sed '/,[ \t]*0$/d' file
egrep -v ",0$" example.csv 

看看我的自由和开放源码软件项目,它正是为了做这类事情。确实,非常感谢,出于某种原因,我曾想象它会让我变得更复杂。
egrep -v ",0$" example.csv