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

SEDコマンドを使用してファイル内の文字列を検索して置換する-Ubuntuでこのタスクを実行するにはどうすればよいですか?

sedはストリームエディタの略です。指定されたファイルを読み取り、sedコマンドのリストで指定されたとおりに入力を変更します。

デフォルトでは、入力は画面に書き込まれますが、ファイルを強制的に更新することができます。

Sed(Stream EDitor)Linuxコマンドは、テキストファイル内の単語や行の検索、検索、置換、または挿入と削除に使用されます。

Sedコマンドの最も一般的な使用例は、ファイル内の文字列を見つけて置き換えることです。 Sedコマンドを使用すると、ファイルを開かなくても編集できます。

ここLinuxAPTでは、サーバー管理サービスの一環として、お客様がLinuxサーバー関連のクエリを実行するのを定期的に支援しています。

これに関連して、Sedコマンドを使用してUbuntu20.04システムのファイル内の文字列を検索および置換する方法を検討します。


Ubuntuで検索して置換

デフォルトでは、SedはほとんどのLinuxディストリビューションにインストールされています。 LinuxシステムにSedがインストールされていることを確認するには、次のコマンドを実行します。

$ sed --v

Sedコマンドを使用してテキストを検索および置換する基本的な構文は次のとおりです。

$ sed -i 's/Search_pattern/Replacement_pattern/g' FILE

場所:

-i:このオプションを使用すると、出力を標準出力に書き込む代わりに、Sedコマンドでファイルを編集できます。

s:代替の略です。

//:区切り文字。

g:グローバル置換フラグです。

FILE:Sedコマンドで操作するファイル。


検索パターン、置換パターン、およびその他の引数を引用符で囲むことを強くお勧めします。

たとえば、デモに使用したテキストファイルは次のとおりです。

567 Test test test
test /bin/zsh linuxapt.com testbar 789

すべての「test」の単語を「linux」の単語に置き換えるには、次のコマンドを実行します。

$ sed -i 's/test/linux/g' test.txt

gフラグを使用しない場合、各行で最初に出現する検索パターンのみが置き換えられます。

$ sed -i 's/test/linux/' test.txt

検索パターンの一致で大文字と小文字を区別しないようにするには、Iフラグを使用します。

$ sed -i 's/test/linux/gI' test.txt

Linuxの世界では、テキストファイルに区切り文字が含まれる多くのユースケースに遭遇します。

区切り文字を区切るには、円記号\を使用する必要があります。

たとえば、/ bin/zshを/usr/ bin / bashに置き換えるには、次のコマンドを実行します。

$ sed -i 's/\/bin\/zsh/\/usr\/bin\/bash/g' test.txt


再帰的な検索と置換

多くの場合、特定の文字列を持つファイルをディレクトリで再帰的に検索し、すべてのファイルでその文字列を置き換えます。

たとえば、次のコマンドは、現在のディレクトリ内のすべてのファイルで文字列「apt」を検索して「road」に置き換えます。

$ find . -type f -exec sed -i 's/apt/road/g' {} +

ファイル名にスペース文字が含まれている場合は、-print0オプションを使用しましょう:

$ find . -type f -print0 | xargs -0 sed -i 's/way/road/g'

特定の拡張子を持つファイルでのみ文字列を検索して置き換えるには、次のコマンドを実行します。

$ find . -type f -name "*.java" -print0 | xargs -0 sed -i 's/apt/road/g'



Ubuntu
  1. Ubuntu 20.04でのユーザーの追加と削除-このタスクを実行する方法は?

  2. Ubuntu 20.04にインストールされているパッケージを一覧表示する-このタスクを実行する方法は?

  3. Sedを使用して複数行の文字列を置き換える方法は?

  1. Ubuntu18.04およびCentOS7でLinuxシャットダウンコマンドを使用する方法

  2. Ubuntu で string コマンドを使用する方法

  3. Linuxコマンドラインで複数のファイルの文字列を置き換える方法

  1. sedを使用してファイル内の文字列を検索および置換する方法

  2. Grepコマンドを使用してファイル内のテキストを検索する方法

  3. Ubuntu20.04にCurlコマンドをインストールして使用する方法