ファイル内で 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

目的の出力を得るには、以下のコマンドを試してください。

GNU セッド

$ 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 では、先読み内で連続する 5 つの文字列を検索して ,0、それが grep の出力バッグに含まれないようにします。

答え4

Sed は次の操作を実行できます:

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

関連情報