簡體   English   中英

從csv文件bash,sed,bash中刪除一行

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM