ホームページ  >  記事  >  運用・保守  >  Linuxでファイル内の文字列を置換する方法

Linuxでファイル内の文字列を置換する方法

青灯夜游
青灯夜游オリジナル
2022-03-24 18:12:1726466ブラウズ

Linux では、sed コマンドを使用してファイル内の文字列を検索および置換できます。このコマンドはストリーム編集モードを使用し、正規表現に基づいてテキスト ファイル内のデータを照合および処理できます。置換構文は次のとおりです: "sed 's/検索する文字列または正規表現/置換値/g' 操作を実行するファイル名。」

Linuxでファイル内の文字列を置換する方法

#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。

テキスト ファイルを操作する場合、ファイル内の文字列を検索して置換する必要があることがよくあります。 Linux では、これは sed コマンドを使用して実行できます。このコマンドは主にファイル内のテキストを置換するために使用されます。

sed コマンドとは何ですか?

sed コマンドは Stream Editor の略で、Linux 上で基本的なテキスト操作を実行するために使用されます。ファイルの検索、検索、変更、挿入、削除などのさまざまな機能を実行できます。

sed コマンドはストリーム編集モードを使用し、複雑な正規表現のマッチングを実行できます。

sed コマンドは、正規表現に基づいてテキスト ファイル内のデータを照合して処理します。

これは次の目的に使用できます:

  • 指定された形式に一致するコンテンツを検索して置換します。

  • 指定された行内で指定された形式に一致するコンテンツを検索して置換します。

  • 指定された形式に一致するすべての行を検索して置換します。

  • 2 つの異なるパターンを同時に検索して置換します。

sed コマンドはファイル内の文字列を置換します

文字列を置換するための一般的な sed 構文。

sed -i 's/Search_String/Replacement_String/g' Input_File

まず、これを行うには sed 構文を理解する必要があります。詳細を見る。

  • sed: これは Linux コマンドです。

  • -i: これは sed コマンドのオプションです。何をするものですか?デフォルトでは、sed は結果を標準出力に出力します。 sed を使用してこのオプションを追加すると、その場でファイルが変更されます。サフィックス (-i.bak など) を追加すると、元のファイルのバックアップが作成されます。

  • s: 文字 s は置換コマンドです。

  • Search_String: 指定された文字列または正規表現を検索します。

  • Replacement_String: 置換文字列。

  • g: グローバル置換フラグ。デフォルトでは、sed コマンドは各行で最初に出現したパターンを置き換えますが、行内の他の一致は置き換えません。ただし、置換フラグが指定されている場合は、すべての一致が置換されます。

  • /: 区切り文字。

  • Input_File: 操作を実行するファイル名。

sed コマンドを使用してファイル内のテキストを検索および変換する一般的な例をいくつか見てみましょう。

デモ用に次のファイルを作成しました。

# cat sed-test.txt
1 Unix unix unix 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

1) 各行の「最初の」パターン一致を見つけて置換する方法

以下の sed コマンドは、ファイル内の unix を linux に置き換えます。これにより、各行のパターンの最初のインスタンスのみが変更されます。

# sed 's/unix/linux/' sed-test.txt
1 Unix linux unix 23
2 linux Linux 34
3 linuxlinux UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

2) 各行で「N 番目」に出現するパターンを検索して置換する方法

/1、/2.../n などを使用します。行フラグ内の . を使用して、対応する一致を置き換えます。

次の sed コマンドは、行上の unix モードの 2 番目のインスタンスを linux に置き換えます。

# sed 's/unix/linux/2' sed-test.txt
1 Unix unix linux 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

3) 各行のすべてのパターン インスタンスを検索して置換する方法

次の sed コマンドは、g がグローバルであるため、UNIX 形式のすべてのインスタンスを Linux に置き換えます。フラグを置き換えます。

# sed 's/unix/linux/g' sed-test.txt
1 Unix linux linux 23
2 linux Linux 34
3 linuxlinux UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

4) 行内の「N 番目」から始まるすべての一致するパターン インスタンスを検索して置換する方法

次の sed コマンドは、行内のパターンを置換します。 「N番目」から始まるインスタンス。

# sed 's/unix/linux/2g' sed-test.txt
1 Unix unix linux 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

関連する推奨事項:「Linux ビデオ チュートリアル

以上がLinuxでファイル内の文字列を置換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。