web-dev-qa-db-ja.com

「sed」を使用して検索および置換する

私はこの質問がおそらく以前に答えられたことを知っています。私はさまざまな場所でこれについて多くのスレッドを見てきましたが、通常、答えを抽出するのは困難です。 「sed」コマンドの使用例のヘルプを探しています。

「プロンプト」と同じディレクトリにある「hello.txt」ファイルを操作したいとします。 「少数」というフレーズが含まれている場合は、「asd」に変更する必要があります。コマンドはどのようになりますか?

338
roo

sedstreameditor|(パイプ)を使用して標準ストリーム(具体的にはSTDINおよびSTDOUT)をsed経由で送信し、変更することができます。それらをプログラムで即座に実行できるため、Unixの哲学の伝統において便利なツールとなっています。ただし、下記の-iパラメータを使用して、ファイルを直接編集することもできます。
次の点を考慮してください

sed -i -e 's/few/asd/g' hello.txt

s/を使用してs見つかった式fewasdで置き換えます:

少数、勇敢な。


Asd、勇敢な。

/gは「グローバル」を意味し、行全体でこれを行うことを意味します。 /gを省略した場合(s/few/asd/の場合、何に関係なく常に3つのスラッシュが必要です)、fewは同じ行に2回表示され、最初のfewasdに変更されます。

少数の男性、少数の女性、勇敢な。


Asd男性、少数の女性、勇敢な。

これは、行頭の特殊文字を変更するなどの状況で役立ちます(たとえば、一部の人々が電子メールスレッドの以前の資料を水平タブで引用するために使用する大なり記号を、行の後半に引用された代数の不等式を残して置換します)そのまま)、ただし、anywhereを指定する例では、fewが発生した場合、置き換える必要があります。その/gがあることを確認してください。

次の2つのオプション(フラグ)は、1つの-ieに結合されます。

-iオプションは、ファイルhello.txtin場所を編集するために使用されます。

-eオプションは、実行するexpression/commandを示します。この場合はs/です。

注:-i -eを使用して検索/置換することが重要です。 -ieを実行すると、文字「e」が追加されたすべてのファイルのバックアップが作成されます。

630
sed -i 's/fea/asd/g'  hello.txt

g:グローバル

s:代替

-i:リアルタイムはファイルで動作しますinplace

75
PersianGulf