
テキストファイルには次のデータがあります。
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
希望の出力を取得するには、次のコマンドを試すことができます。
ヌズド
$ 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 の出力パッケージに含まれないように、プレビューで 5 つの連続した項目が検索されます。
答え4
sedは次のことができます。
sed -n '/,0,0,0,0,0[,$]/p' file.txt | sed 's/,.*//'