从csv文件bash、sed、bash中删除一行
我正在寻找一种方法来删除多个csv文件中的行,在bash中使用sed、awk或任何合适的方法,在文件以0结尾的地方 因此有多个csv文件,其格式为:从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
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