SED またはストリーム エディターで最も重要なコマンドは、「s」コマンドです。 「s」は代替品を表します。構文は次のとおりです:
/regexp/replacement/flags
それでは、例として「file.txt」というファイルを使用してみましょう。 「file.txt」をトレースすると次のようになります:
「S」コマンドがどのように機能するかを説明するために例を使用してみましょう:
SED「S/First/Moon/I」file.txt>moon.txt
このような式が与えられた場合、それは次のことを意味します:
ファイル .txt で検索されました
SED では、最初のインスタンスでのみ、単語「first」が「moon」に置き換えられます (これは、「first」が複数回出現した場合、最初の 1 回のみが置き換えられることを意味します)。このコマンドは、「file.txt」という名前のファイルを検索し、置換が完了すると、結果が「moon.txt」ファイルに保存されます。
これは次のようになります:
必要な場合は「/」を忘れずに入力してください。 「/」を省略した場合、SED はコマンドを受け付けません。
ここまでは「初めて」を「出会い」という言葉に置き換えただけです。ここで、3 行目の「line」という単語 (複数回、具体的には 4 回出現します) を「Angel」という単語に置き換えたいとします。
具体的に 3 行目をターゲットにするにはどうすればよいでしょうか?次のコマンドを使用します:
SED‘3S/Line/Angel/I’file.txt>angel.txt
それで、ここで一体何が起こったのでしょうか? 「3」は行番号を指定します。それで3行目になります。次に、「file.txt」という名前のファイル内の「angel.txt」を「line」に置き換え、変換されたファイルを「angel.txt」として保存します。
行「3」と「4」を置換または変換したい場合はどうすればよいでしょうか?
Sed‘3,4s/line/Angel/I’file.txt>angel2.txt
前の例では、無視を表すために「i」フラグを使用したことに注意してください。ここで、「g」フラグを使用してグローバルを表します。
例を使用して、「s」コマンドがどのように機能するかを説明します。
sed’s/line/sun/g ‘file.txt>sun.txt
このような式が与えられた場合、それは次のことを意味します:
G はグローバルを表します。最初の例で「i」フラグを使用したとき、置換は 1 つだけだったということを思い出してください。 global に「g」を追加したため、どこにでも代替手段があることを意味します。つまり、最初の行、2 行目、3 行目、最後の行という代わりに、最初の太陽、2 番目の太陽、3 番目の太陽、そして最後の太陽となります。ファイル全体の (あらゆる場所の) 単語の行が「sun」という単語に置き換えられます。
さて、その行に含まれる単語に基づいて行を選択したい場合はどうすればよいでしょうか? 「file.txt」の最後の行に「last」という単語が含まれていることがわかります。ここで、「これが最後の行です」としたいとします。これが最後の言葉だ」 「これが最後の幽霊だ。これが最後の文です。」
次のように書きます:
Sed‘/last/S/line/host/’file.txt>.ghost.txt
ここでの「last」は、SED に「last」という単語を含む行を検索し、その行内の単語「line」を「ghost」に置き換えるよう指示します。
さて、逆のことをしたいとします。 「last」という単語を含まないすべての行で、「line」という単語を「host」に変更したいとします。次のように書きましょう:
「/last/!」を選択してください。 S/line/ghost/'file.txt>.ghost 2.txt
ここでわかるように、最後の行 (「last」という単語が含まれる) を除くすべての行で、「ghost」という単語が「line」という単語に置き換えられています。
行番号を使用してこれを実現することもできます:
セド「3,4!」 S/行/夜/I'file.txt>night.txt
この場合、3 行目と 4 行目は省略されていますが、1 行おきに「line」という単語が「night」という単語に置き換えられています。
それでは、複数のコマンドがある場合はどうなるでしょうか?時間と労力を節約するために、一度に 1 つずつ実行するのと、一度にすべて実行するのとではどちらが良いでしょうか?
「最初」という単語を「昼」に、「二番目」という単語を「夜」に、「休憩」という単語を「幽霊」に変更したい場合はどうすればよいでしょうか?これにはセミコロンを使用します。最後にセミコロンを付けるのを忘れないでください。
「i」フラグや「ignore」フラグを置く必要はありませんが、変換フレーズの後にスラッシュ (/) を置く必要があることに注意してください。
それでは、例を使って検証してみましょう:
sed の/最初/日/;s/2 番目/夜/;s/3 番目/ghost/;s/last/ghost/;'file.txt>combination.txt
#########結論は#########以上がストリーム エディター (SED): 基本の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。