'sed' を使用して検索と置換を行う

'sed' を使用して検索と置換を行う

この質問はおそらく以前に回答されていると思います。さまざまな場所でこの件に関するスレッドをたくさん見てきましたが、回答を見つけるのは通常私にとって難しいです。「sed」コマンドの使用例についての助けを求めています。

たとえば、ファイル「hello.txt」(プロンプトと同じディレクトリ内) を操作したいとします。このファイル内の「few」という語句が含まれている箇所はすべて「asd」に変更する必要があります。コマンドはどのようになるでしょうか。

答え1

sedそれはsエドitor|(パイプ)を使用して送信することができます標準ストリーム(具体的には STDIN と STDOUT)sedをプログラムでオンザフライで処理し、変更することができるため、Unix 哲学の伝統に則った便利なツールとなっています。また、-i下記のパラメータを使用してファイルを直接編集することもできます。
次のことを考慮してください:

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

s/に慣れているs見つかった式をfew次のように置き換えますasd:

少数だが勇敢な者。


ASD、勇敢な者。

/gは「グローバル」を意味し、行全体に対してこれを実行することを意味します。 を省略した場合/g( を使用する場合s/few/asd/、常に 3 つのスラッシュが必要です)、 がfew同じ行に 2 回出現すると、最初の 1 つだけfewが に変更されますasd

少数の男たち、少数の女たち、勇敢な者たち。


ASD の男性、少数の女性、勇敢な人々。

これは、行頭の特殊文字を変更する場合(たとえば、電子メールのスレッドで前の資料を引用するために一部の人が使用する大なり記号を水平タブに置き換え、行の後半の引用された代数不等式はそのまま残すなど)など、いくつかの状況では便利ですが、どこでも few交換する必要がある場合は、必ず交換してください/g

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

-iオプションは編集に使用されますn ファイルを置きますhello.txt

-eオプションはe実行する式/コマンド。この場合はs/

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

答え2

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

グ:グローバル

s:代わりの

-私: リアルタイムでファイルを扱う所定の位置に

関連情報