はい

はい

現在の行番号からyyyy-mm-dd形式の日付で始まる行番号を見つける方法は?以下の例では、次から始まる行の行番号を知りたいです。2016-10-09 ggg現在行番号の10から始まります。 10からN + 1までの行には特定のパターンがなく、これらの行は日付で始まりません。私の現在のコードは次のとおりです。

lineNos=($(grep -n ERROR $file | cut -d':' -f1 | tail -3))
length=${#lineNos[@]} 
for((i=0;i<length;i++));do 
  lineNumber=${lineNos[i]}`
  endLineNo= Need to find this
 sed -n "${lineNumber},${endLineNo}p" $file
done

はい

    2016-10-04 mmmus
10 2016-10-09エラーdddd
11tttttt
12個のエラー
    ...
いいえ...
N+1 2016-10-09 ggg
N+2 2016-10-10 はい

ベストアンサー1

これはawkを使った古典的な仕事なので、おそらく「最初のgrep」は必要ありません。

cat myfile | awk '/pattern1/ {start=1} /pattern2/ {if (start) print NR}'

本当にパターン2を探したいのですが、LINEラインでのみ検索を開始した場合は、次のようにできます。

cat myfile | awk '/pattern2/ {if (NR>'$LINE') print NR}'

おすすめ記事