Linux
 Computer >> コンピューター >  >> スマートフォン >> Linux

Linuxコマンドラインマジック–検索して置換

このガイドでは、Linuxを使用しているときに、ファイルやディレクトリ内の単語、文字列、またはフレーズを検索して置き換える方法を説明します。

Linuxコマンドラインで作業しているときに、特定のテキストを別のテキストに置き換える必要のある大きなファイルまたは多数のファイルに遭遇した場合、テキストの各インスタンスを見つけて貼り付けるのに少し時間がかかることがあります。まあ、もう心配する必要はありません。 Linuxはあなたにぴったりのソリューションを提供します。 1つ以上のファイル内のテキストの文字列を自動的に検索して置き換える方法は次のとおりです。

この演習では、「sed」と呼ばれるLinuxコマンドラインツールを使用します。 「sed」は非常に強力で用途の広いツールであり、その機能について多くのことを書くことができます。ここでは、「sed」の非常に限られた側面を使用しています。この側面がおもしろいと思ったら、「sed」についてもう少し読んでおくことを強くお勧めします。

次の構文を使用して、ファイル内のテキスト文字列を検索して置き換えます。

sed -i‘s / [orginal_text] / [new_text] /’filename.txt

データベースサーバーのIPアドレスのインスタンスが多数含まれている「database.txt」というファイルがあるとします。新しいデータベースサーバーに切り替えたばかりで、新しいサーバーのIPアドレスで更新する必要があります。古いIPアドレスは192.168.1.16で、新しいIPアドレスは192.168.1.22です。方法は次のとおりです:

cat database.txt
LOCAL_DATABASE =192.168.1.16
LOCAL_DIR =/ home / calvin /
PROD_DB =192.168.1.16

sed -i’s / 192.168.1.16 / 192.168.1.22 / g’database.txt
#c database.txt
LOCAL_DATABASE =192.168.1.22
LOCAL_DIR =/ home / calvin /
PROD_DB =192.168.1.22

次に、ファイル「database.inc」を開き、古いIPアドレスの代わりに新しいIPアドレスが使用されているかどうかを確認します。上記のコマンドの内訳は次のとおりです。まず、「sed」コマンドを呼び出します。次に、「の代わりに」を表すパラメータ「-s」を渡します。次に、次のビットで一般に「正規表現」と呼ばれる正規表現を少し使用します。引用符で囲まれた文字列の「s」は「substitute」を表し、末尾の「g」は「global」を表します。それらの間に、「それらの間に配置したテキストの文字列のグローバル置換」が発生します。

オプションで、最後の「g」をスキップできます。これは、置換がグローバルではないことを意味します。これは、実際には、行の文字列の最初のインスタンスのみの置換に変換されます。したがって、置き換えようとしているテキストの複数のインスタンスを含む行がある場合、次のようになります

cat database.txt
LOCAL_DATABASE =192.168.1.16
LOCAL_DIR =/ home / calvin /
PROD_DB =192.168.1.16、192.168.1.16

sed -i’s / 192.168.1.16 / 192.168.1.22 /’database.txt
cat database.txt
LOCAL_DATABASE =192.168.1.22
LOCAL_DIR =/ home / calvin /
PROD_DB =192.168.1.22、192.168.1.16

これが本当の魔法です。ここで、単一のファイルだけでなく、現在のディレクトリ全体でテキストの文字列を変更するとします。「wine」を見つけて「champagne」に置き換える必要のあるテキストファイルがいくつかあります。 。

検索。 -maxdepth 1 -name“ * .txt” -type f -exec sed -i‘s / wine / champagne /’{} \

findコマンドを使用して、現在のディレクトリ内のすべてのテキストファイルのリストを取得します。それが「検索」です。 -maxdepth 1 -name“ * .txt” -type f”part。 "探す 。 maxdepth 1”は、現在のディレクトリを調べて、現在のディレクトリより深くならないようにコンピュータに指示します。 ‘-name“ * .txt”‘の部分は、拡張子が“ .txt”のファイルのみを一覧表示するように検索するように指示します。次に、「-type f」セクションは、「find」が完全に一致するファイルのみを選択する必要があることを指定します。最後に、「-exec」部分は「find」に次のコマンドを実行するように指示します。この場合、これはテキストを置き換える「sed」コマンドです–“ sed -i's / wine / champagne /'{} \ 」。

ファイル内のものを見つけて置き換えることができるようになったので、他のLinuxのヒントをチェックしてみませんか:)


  1. ChromeとFirefoxでテキストを検索して置き換える方法

    ブラウザは、その名前が示すように、Webを閲覧するためのものです。テキストエディタとして使用するためのものではありません。そのため、ブラウザで「テキストの検索と置換」などのテキスト編集機能を見つけることはめったにありません。 ただし、ブログの投稿を書いたり、コメントを入力したり、メールを作成したり、フォーラムをモデレートしたりして、何度も表示されるいくつかの単語を置き換えたい場合があります。ここで、「テキストの検索と置換」機能が役立ちます。検索と置換機能をGoogleChromeとFirefoxに追加する方法を見てみましょう。 GoogleChromeの検索と置換 検索と置換は、Googl

  2. メモ帳++で文字列/文字/記号を検索して新しい行に置き換える

    Notepad ++は、簡単な環境でコードを編集するためにプログラマーが主に使用するソースコードおよびテキストエディターです。これはデフォルトのメモ帳の高度なバージョンであり、いくつかの言語をサポートしています。ユーザーがソースコードやテキストを編集するために使用できる多くの機能とツールがあります。ユーザーは、既存のテキストファイルに新しい行を追加する必要がある場合があります。ただし、新しい行に置き換える前に設定する必要のあるさまざまなオプションがあります。この記事では、検索と置換ツールを使用してNotepad++で新しい行を追加する方法について説明します。 文字列/文字/記号を改行に置き換