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