行番号が異なり、一致する単語の前後の内容のみを返す

行番号が異なり、一致する単語の前後の内容のみを返す

私はシグウィンを使用しています。

私はすでに私の手のライン#を知っています。スクリプトは、指定された行番号の上にある文字列の最初の出現を見つけ、指定された行番号の下monoにある文字列の最初の出現を見つけて、間にあるものだけを返す/mono必要があります。 mono/mono

入力する:

I have known line # in my hand.  
Script should look for the first occurrence of word mono  
not monoono  
above a specified line #  
and look for the  
first occurrence of word /mono below the specified line #s  
and return ONLY the contents between those 'mono' and /mono  

期待される出力

mono 
not monoono  
above a specified line #  
and look for the  
first occurrence of word /mono  

どうすればいいですか?

ベストアンサー1

GNUのコンパクトバージョンsed

sed -E 'H;4!d;g;s/.*\<mono\>/mono/;:a;N;s_/mono\>.*_/mono_;Ta' in

説明する:

  • H予約済みスペースのすべての行を収集
  • 4!d4行目を除くすべての出力を抑制
  • 4行目で予約済みスペースをパターンスペース()に移動し、次のコマンドを使用してg単語の前のすべてのエントリを削除します。monos
  • :a; ... ;Taループを形成し、読み込まれるNまで行を追加します。/mono

おすすめ記事