GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでSed、ex、perlコマンドを使用してテキストを検索および置換する

質問: テキストをhtmlファイルのアンカータグ内のリンクに置き換えたいのですが。課題は、プロジェクトにそのようなHTMLファイルが何百も含まれており、それらすべてのファイルのテキストを手動で置き換えることは賢明な方法ではないということです。だから問題は、Linuxで単一のコマンドを使用して同じことをどのように行うことができるかということです。

解決策:

sedの使用 Linuxのコマンド:

sed -i 's/#\(.*logo\)/domain.ca\1/' $file

上記のコマンドは、パターン logoを含む行を検索します 「#」をリンク(例:domain.ca)に置き換えます

以下に示すように、上記のコマンドに複数のファイルを渡すこともできます。

上記のコマンドの別のバリエーションは次のとおりです。

sed -i '/logo.png/ s/#/domain.ca/' *.html

perlの使用 コマンド:

perl -i -pe 's/#/domain.ca/ if /logo.png/' about-us.html

コマンドは非常に簡単です。ファイルのその行に一致する文字列が見つかった場合にのみ、テキストを検索して特定の文字列に置き換えます。

上記のコマンドはすべて同じ役割を果たしますが、正規表現の入力方法が異なるだけです。

exでVimを使用する モード(複数のファイルでは使用できません):

ex -sc '/logo/s/#/http:\/\/domain.ca\//|x' about-us.html

上記のコマンドでは、正規表現‘ /logo/s/#/http:\/\/domain.ca\// | x ‘は‘ s’と‘ x’で構成されます。ここで、‘s’は置換を表し、‘x’はファイルを保存して閉じるためのものです。

注:上記のコマンドは vimを使用します 、複数のファイルを渡すことはできません。置き換えるファイルごとに、このコマンドを手動で実行する必要があります。


Linux
  1. Linuxコマンドを使用して画像にテキストを書き込む方法

  2. Linuxでsedを使用してテキストファイルを検索および置換する

  3. 「sed」を使用して検索して置換しますか?

  1. Linux Sedコマンド:使用法と例

  2. Mac および Linux でのテキスト ファイルでの再帰的な検索と置換

  3. 一致するテキストを見つけて次の行を置き換える

  1. Linuxコマンド-概要と例

  2. Linuxコマンド:jobs、bg、およびfg

  3. grep と sed を使用して文字列を検索して置換する