2017-06-07 5 views
0

私はsedを初めて使用しています。私は下のコマンドで完全な正規表現を見つけることができません。Sedスクリプトが個々のコマンドにどのように分解するのかを理解する

sed -e ':a;N;$!ba;s/>[[:space:]]*\n/>\\\n/g' nlTest1.txt > nlTest2.txt

私たちは一緒に3つのコマンドを持っていますか?

:a;N;$!ba;s

>[[:space:]]*\n

>\\\n/g

または私はコマンドを正しくintrepretingていませんよ。

答えて

2

コマンドのパーティショニングは、次のとおり

  • :a;N;$!ba、ループ内で、一度に(上で動作するバッファ)パターンスペースに全入力ファイルを読み取るための一般的なイディオムです。

    • ラベル:a(へジャンプすることができるスクリプトの場所を定義する)
    • 機能N(次の行を読み取り、パターンスペースに追加し)
    • :それは3 ;区切られたコマンドで構成されています入力ラインが(!最後の$)でなければ、aのラベルに(b)を分岐する$! ba
  • s/>[[:space:]]*\n/>\\\n/gフォームs/<regex>/<substitution-string>/で正規sの関数呼び出しです。ここでは、>のすべての出現に続けて改行が続く空白の実行が、ただ>\と改行に置き換えられます。

関連する問題