2017-07-10 12 views
-2

sed -n '/aaaa/{:a;n;/zzzz/b;p;ba}'誰かがこのsedコマンドを私に説明してもらえますか?

文脈では

:正しいと期待されている "sometext"、

echo "aaaa\nsometext\nzzzz\n" | sed -n '/aaaa/{:a;n;/zzzz/b;p;ba}'

プリントが、私はしばらくの間、sedのチートシートを凝視にもかかわらず、構文を理解していません。

ありがとうございます!

+2

ようこそStackOverflow。残念ながら、これは無料のコンサルティング/デザイン/コーディング/デバッグサービス、チュートリアルサイト、Web検索の代替ではありません。私たちは[特定の問題](https://stackoverflow.com/help/on-topic)を解決するのを助けることができますが、**あなたの仕事** ** [いくつかの努力をする](http://meta.stackoverflow.com/question/261592)**初級** [(再)検索](https://google.com/)* –

+0

Hmを含む件名の件名に**。私のmingwコンソールで私のために働かない。 –

+0

文字通り、 'sed'コマンドの使い方や、あなたの例の置換文字列を解釈する方法のウェブ検索から、何千もの例が得られるはずです。 –

答えて

1

sedは、現在の行をパターン領域に読み込みます。通常、sedは現在の行を処理した後にパターン空間を表示します。これは、オプション-nで無効にすることができます。 sedはコマンドpでパターン空間のみを出力します。

もしsedが式aaaaのどこかを含む行を見つけた場合にのみ、それはcurley bracketsでコマンドを実行します。

:aは、名前がaのラベルであり、効果がありません。コマンドnを使用して、sedは次の入力行をそのパターン領域に読み込みます。 aaaaはパターンスペースで上書きされます。パターンスペースに式zzzzが含まれている場合は、コマンドbを実行し、スクリプトの最後に分岐して実行を終了します。パターンスペースに式zzzzが含まれていない場合はp(印刷パターンスペース)を実行し、コマンドba(ラベルaにジャンプ)を実行します。そしてコマンドでもう一度やり直してくださいn ...

関連する問題