GNU/Linux >> Linux の 問題 >  >> Linux

テキスト/パターンの最初の 2 つのインスタンスの間の単語を取得するにはどうすればよいですか?

ここに awk の 1 つがあります:

$ awk '/^=+$/{f=!f;if(f==1)next;else if(f==0)exit}f' file
v2.0.0

Added feature 3
Added feature 4

きれいな文字で:

$ awk '/^=+$/ {     # at ===...
    f=!f            # flag state is flipped
    if(f==1)        # if its one (first ===...)
        next        # next record
    else if(f==0)   # if zero (second ===...)
        exit        # nothing more to do yeah
}
f' file             # print

これは GNU sed の別のものです:

$ sed -n '/^=\+$/,//{//!p;b};q' file
v2.0.0

Added feature 3
Added feature 4
  • /^=\+$/,// /^=\+$/,/^=\+$/ の短縮形です 、等号で構成される 2 つの行の間の行が選択され、これらの行に対して次の中括弧内のコマンドが実行されます。
  • //!p /^=\+$/!p の短縮形です 、着信回線が = のみで構成される回線のいずれでもない場合を意味します さ、印刷して、
  • b サイクルの終わりに行くことを意味します (つまり、 q を渡します) )、
  • q 選択した行を印刷した後に sed を終了するためのものです。

次のバージョンはすべてで動作します POSIX 準拠の sed ですが、見た目は 2 倍の難解です:

sed -n -e '/^=\{1,\}$/,//{//!p;b' -e '}' -e 'q' file

= が 2 つ続く場合、これらは機能しないことに注意してください。 入力の行。


あなたもフォローしてみてください。

awk '/^=/{count++;next} count>=2{exit} {print}'  Input_file

Linux
  1. ファイルの最初の行の前にテキストを挿入する方法は?

  2. bashで2つの日付の違いを取得するにはどうすればよいですか

  3. 非常に大きなテキスト ファイルの最後の 2 行を効率的に削除する

  1. それらを含む2つのパターン間の最初の発生を選択する方法は?

  2. 文字列の最初の出現から始めて、大きなファイルからテキストを抽出する方法は?

  3. オペレーティング システムの名前を確実に取得するにはどうすればよいですか?

  1. シェルコマンドを使用してASCIIファイルの最初のN行を削除するにはどうすればよいですか?

  2. 2つの特定の行の間にテキストを抽出しますか?

  3. Linuxでキーボードの状態を取得するにはどうすればよいですか?