如何找出檔案中連續5個“0”?

如何找出檔案中連續5個“0”?

我在文字檔中有以下數據:

Name,7/27,7/28,7/29,7/30,7/31,8/1,8/2,8/3,8/4
abc,5,3,8,8,0,0,2,0,11
def,6,7,0,0,0,0,0,2,5
ghi,1,3,5,2,0,0,5,3,6

我需要找出哪個文件(“名稱”列即文件名)給出 5 個連續的0輸出。在這個例子中,那就是def.

答案1

我可能會在 中這樣做awk,使用,作為分隔符號:

$ awk -F, '/,0,0,0,0,0/{print $1}' file 
def

然而,這也會捕捉到這樣的一行:

mno,6,7,0,0,0,0,0.5

為了避免這種情況,僅當最後一個後面0跟著 a,或行尾時才匹配:

awk -F, '/,0,0,0,0,0(,|$)/{print $1}' file 

答案2

grep '0,0,0,0,0' file.txt

列印匹配行:def,6,7,0,0,0,0,0,2,5

grep '0,0,0,0,0' file.txt | cut -d, -f1

使用作為分隔符號列印第一個欄位,def

答案3

為了獲得所需的輸出,我們可以嘗試以下命令。

Gnused

$ sed -nE 'G;y/,/\n/;/(\n0){5}\n/P' file

$ awk -F, '/(,0){5}(,|$)/ && $0 =$1""' file

$ grep -oP '^[^,]+(?=.*?(,0){5}(,|$))' file 

開啟 PC Re 模式的 Grep,我們 ,0在前瞻中尋找連續的五個,這樣它就不會包含在 grep 的輸出包中。

答案4

sed 可以這樣做:

sed -n '/,0,0,0,0,0[,$]/p' file.txt | sed 's/,.*//'

相關內容