以下はサンプルの.logファイルです(より多くの行がある可能性があります)。
2022 User abc (iii)
2023 defaa <party> ttt
2222221 User def (bbb)
20222 defaa <accoun> ttt
2222 User dddd (aaa)
3333 defaa <hahaha> jmd
User
&の間の行を選択したいと思います。ttt
これはログの5行から7行に似ており、このログにはUser
&で構成されている行がさらにある場合があります。ttt
User
ttt
だからあなたがファイルで繰り返されても、&の間のすべての行を取得する方法を知りたいです。
テキストUser
とttt
常に連続した行にあるわけではありません
予想出力:
abc (iii)
2023 defaa <party>
def (bbb)
20222 defaa <accoun>
入れ子になった場合は、次のようになります。
2022 User abc (iii)
2222221 User def (bbb)
20222 defaa <accoun> ttt
2023 defaa <party> ttt
予想出力:
def (bbb)
20222 defaa <accoun>
ユーザーとtttは決して同じ行にありません
ベストアンサー1
マルチキャラクタのGNU awkの略語を使用することはあなたが望むものかもしれませんRS
。RT
\s
[:space:]
$ awk -v RS='\\s*ttt' 'RT && sub(/.*User\s*/,"")' file
abc (iii)
2023 defaa <party>
def (bbb)
20222 defaa <accoun>
部分一致を許可したくない場合は、User
周囲ttt
に単語の境界を追加してください。
awk -v RS='\\s*\\<ttt\\>' 'RT && sub(/.*\<User\>\s*/,"")' file