100行のファイルを読み込んでパターンを検索するbashスクリプトを作成したいと思います。def <space>
その行でパターンが見つかったら、次の行を調べて、パターンが次の行に'''
あることを確認します。その場合は、'''
次の項目が5行離れていることを確認してください。すべて「はい」の場合はTRUEをエコーし、そうでない場合はFALSEをエコーします。
たとえば、ファイル1:
line 1
line2
...
def something...
'''
random text
rand..text
rand..
ra..
'''
エコ正確
ファイル2:
line 1
line 2
...
def something..
int a
...
エコエラー
def <space>
ファイルにはいくつかのパターンがあり、そのうちの1つがテストに失敗した場合、全体の結果はFALSEです。
awk
、grep
またはを使用してこれを行うにはどうすればよいですかsed
?
答え1
一度試してみると、これがあなたが探しているものかどうかが説明されます。
grep -A5 "def " file.txt | grep -n "'''" | awk -F ':' '{print $1}' | tr '\n' ' ' | awk '{if ($1 == "2" && $2 == "" ) print "TRUE";else print "FALSE"}'