私はセッドを学んでいます。N(次は複数行)に出会うまで、すべてが順調に進んでいるように見えました。このファイル(guide.txt)は、練習/理解/コンテキストの目的で作成しました。上記のファイルの内容は次のとおりです...
This guide is meant to walk you through a day as a Network
Administrator. By the end, hopefully you will be better
equipped to perform your duties as a Network Administrator
and maybe even enjoy being a Network Administrator that much more.
Network Administrator
Network Administrator
I'm a Network Administrator
したがって、私の目標は、「ネットワーク管理者」のすべてのインスタンスを「システムユーザー」に置き換えることです。「ネットワーク管理者」の最初のインスタンスは改行(\ n)で区切られているため、「管理者」で始まる行と「ネットワーク\ n」で終わる前の行を追加するには、複数行の次の演算子(N)が必要です。 。問題ない。しかし、他のすべての「ネットワーク管理者」単一行インスタンスもキャッチしたいと思います。
私の調査から、2つの置換コマンドが必要になることがわかりました。1つは改行で区切られた文字列用で、もう1つは他の文字列用です。また、置換一致を含む最後の行と次の複数行のために、いくつかのジャイブが発生しています。だから私はこれを作ります...
$ sed '
> s/Network Administrator/System User/
> N
> s/Network\nAdministrator/System\nUser/
> ' guide.txt
これはこれらの結果を返します...
This guide is meant to walk you through a day as a System
User. By the end, hopefully you will be better
equipped to perform your duties as a System User
and maybe even enjoy being a Network Administrator that much more.
System User
Network Administrator
I'm a System User
単一行の置換は「ネットワーク管理者」のすべての「通常の」インスタンスをキャッチし、それを「システムユーザー」にスワップアウトすると思いましたが、複数行のステートメントは改行で区切られたインスタンスでその魔法を働かせますが、それが返されたこと、私が考えるところ、予期しない結果を見ることができます。
少しいじった後、私はこれに着陸しました...
$ sed '
> s/Network Administrator/System User/
> N
> s/Network\nAdministrator/System\nUser/
> s/Network Administrator/System User/
> ' guide.txt
ちなみに、私は望ましい出力を得ます...
This guide is meant to walk you through a day as a System
User. By the end, hopefully you will be better
equipped to perform your duties as a System User
and maybe even enjoy being a System User that much more.
System User
System User
I'm a System User
なぜこれが機能し、元のsedスクリプトが機能しないのですか?本当に理解したいです。
助けてくれてありがとう。