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

ファイル内のテキスト、単語、または文字列を検索して置換する方法

Linuxオペレーティングシステム環境のエコシステムの内部を深く垣間見ることができれば、その組み込みコマンドがコンピューティングの問題のほとんどを解決するのに十分であることがわかります。

そのような問題の1つは、特にサーバー環境にいるときに、ファイル内のテキスト、単語、または文字列を見つけて置き換える必要があることです。この問題の解決策を使用すると、「/etc/apt/sources.list」の更新などの厄介な問題を処理できます。 Linuxシステムのアップグレードが成功した後の」ファイル。

Linuxでのテストテキストファイルの作成

test.txt」のような名前のテキストファイルを作成します 」と入力し、テキスト、単語、または文字列文字を入力します。このファイルをターミナルインスタンスと同じパスに配置します。

$ nano test.txt
OR
$ vi test.txt 

catコマンドを使用して、作成したテストファイルの変更を柔軟にメモします。

$ cat test.txt

Sedを使用して、ファイル内のテキスト、単語、または文字列を検索および置換する

このストリームエディタの力は、基本的な入力ストリーム変換を簡単に実行できることにあります。 sedコマンドは、ファイル内の対象となるテキスト、単語、または文字列パターンを検索して置き換える際に、すばやく簡単で時代を超越したアプローチを提供します。

ファイル内のテキスト、単語、または文字列の最初の出現箇所を検索して置換する

作成したテストファイルから、「 LinuxShellTips」という単語のすべてのインスタンスを更新します。 」と代替の「このサイト」 」。 sedコマンドの構文 この単純なタスクを実行するために使用するのは次のとおりです。

$ sed -i 's/[THE_OLD_TERM]/[THE_NEW_TERM]/' [TARGETED_FILE] 

上記のsedコマンドを参照して 使用法と構文については、テストファイルの「 LinuxShellTips」を置き換えることができます 」という用語と「このサイト」 」という用語は次のとおりです。

$ sed -i 's/LinuxShellTips/this site/' test.txt

これで、catコマンドを使用できます 上記で提案されたテストファイルの変更をプレビューして、大幅な編集が行われたかどうかを確認します。

$ cat test.txt

ご覧のとおり、「 LinuxShellTips」という単語の最初の2つの出現 」は「このサイト」というフレーズに置き換えられました 」。

ファイル内のテキスト、単語、または文字列のすべての出現箇所を検索して置換する

上記のコマンドがテストファイル内のすべてのターゲット単語パターンを置き換えたにもかかわらず、その使用法はほとんどの状況で選択的である傾向があります。このコマンドは小さなファイルに最適です。大きなファイルでは、対象となる単語パターンの最初の数回だけが「検索と置換」の恩恵を受ける可能性があるためです。 の腕前。

編集可能なファイルで出現するすべての単語パターンを見つけて置き換えるには、次のsedコマンドに従う必要があります。 構文。

$ sed -i 's/[THE_OLD_TERM]/[THE_NEW_TERM]/g' [TARGETED_FILE]    

お気づきのとおり、'g' 上記のfind&replaceコマンド構文はグローバル変数として機能するため、ターゲットファイル内の用語のすべてのグローバルオカレンスが考慮されます。

$ sed -i 's/this site/LinuxShellTips/g' test.txt

上記のコマンドは、「このサイト」という用語のグローバルな出現をすべて検索します。 」を使用して、「 LinuxShellTips」という用語に置き換えます。 」。

Awkを使用したファイル内のテキスト、単語、または文字列の検索と置換

awkコマンドラインユーティリティに精通している場合は、その強力なスクリプト言語メトリックにより、テキスト処理のプロになることをご存知でしょう。 Linuxシステム管理者とプロのユーザーは、このツールがデータの抽出とレポートに効果的であると感じています。

awkコマンド 単純な検索と置換操作の構文は、次のスニペットのようになります。

$ awk '{gsub("[THE_OLD_TERM]","[THE_NEW_TERM]"); print}' [TARGETED_FILE]

上記の構文では、awkは THE_OLD_TERMに置き換えられます THE_NEW_TERMから TARGETED_FILE内 結果のファイルの内容をシステム端末に印刷します。

実用的なアプローチを取りましょう:

$ awk '{gsub("Linux","ubuntu"); print}' test.txt

両方のsedの動的機能を使用 およびawk コマンドツールを使用すると、対象のファイル内のテキスト、単語、または文字列のパターンを検索、置換、および上書きする必要があります。これらのツールは、システムユーザーにコマンドラインインターフェイスで必要な柔軟性を提供します。


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

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

  3. bashで文字列内の単語のインデックスを見つける方法は?

  1. Awkおよび正規表現を使用してファイル内のテキストまたは文字列をフィルタリングする方法

  2. ファイル内の文字列を置き換える方法は?

  3. テキストファイルで一致しない角かっこを見つける方法は?

  1. Imgファイルのタイプを見つけてマウントする方法は?

  2. テキストファイルの行末を見つける方法は?

  3. sedを使用して、ファイル内の行の範囲内のテキストを検索して置換します