現在の行番号から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}'