Linuxコマンドライン手品- 見つけて取り替えて下さい

2008年12月24日のSukrit Dhandhania によって

Linux

あなたは、Linuxコマンドラインを作っていて、そして、あなたがそこであなたが確かなテキストをもう一つのものと取り替える必要がある大きいファイルまたはとても多くのファイルに出会うときに、テキストのそれぞれのインスタンスを越えて見つけてペーストすることは、時間が少しかかることができます。まあ、もはや心配しないで下さい。Linuxは、あなたのためのちょうどそのソリューションを持っています。一連の1以上のテキストを見つけて取り替える方法が自動的にファイルするHere’s。

この運動の目的のために、私たちは、“sed”と呼ばれるLinuxコマンドライン・ツールを使うでしょう。”sed”が強力であって、とても用途が広い道具とたくさん缶ですその機能について書かれて下さい。私たちは、“sed”のとても限られている様子をここで使っています。私は、興味を引いてもしあなたがそれのこの様子を見つければあなたが“sed”でもう少しより多くの上へ読んだことをはっきりと勧めるでしょう。

私たちは、ファイルで以下のシンタックスを使って見つけて、そして一連のテキストを取り替えに行きます:

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

あなたがそれであなたのデータベース・サーバーのIPアドレスのたくさんのインスタンスで“database.txt”と呼ばれるファイルを持っていると言って下さい。あなたは、新しいデータベース・サーバーにちょうど変わって、そして新しいserver’s IPアドレスでそれを更新する必要があります。古いIPアドレスは、192.168.1.16と新しいものが192.168.1.22だということです。あなたがそれをするHere’s:

#猫database.txt
地元_データベース=192.168.1.16
LOCAL_DIR=/home/calvin/
一突き_DB=192.168.1.16

#sed-i’s/192.168.1.16/192.168.1.22/g’database.txt
#猫database.txt
地元_データベース=192.168.1.22
LOCAL_DIR=/home/calvin/
一突き_DB=192.168.1.22

新しいIPアドレスが起こったかを確認するために今ファイル“database.inc”を開いて、そして調べます、あなたの古いもの。上記の解体が命令するHere’s。最初に、あなたは“sed”をコマンドと呼びます。それから、あなたは、それに“in場所of”を強く要求するパラメーター“-s”を通りすぎます。私たちが少しの正規表現を使う今、一般に次のビットのための“regex”として知られています。引用されたひもの“s”は、“substitute”を強く要求します、そして、終わりの“g”は、“global”を表します。彼らの間で、彼らは、あなたが彼らの間に置くテキストのひもの“global代替の結果になります。

あなたは、終わりで“g”を随意に跳び越すことができます。これは、代替がグローバルでないだろうということを意味します、そして、それは一列になってひもの最初のインスタンスだけの代替に実際には翻訳します。それで、もしテキストの複数のインスタンスで回線を持っていたら、あなたは取り替えようと試みています、何がするかが起こるhere’s

#猫database.txt
地元_データベース=192.168.1.16
LOCAL_DIR=/home/calvin/
一突き_DB=192.168.1.16、192.168.1.16

#sed-i’s/192.168.1.16/192.168.1.22/’database.txt
#猫database.txt
地元_データベース=192.168.1.22
LOCAL_DIR=/home/calvin/
一突き_DB=192.168.1.22、192.168.1.16

ここに,本当の手品が来ます。今、あなたがちょうど唯一のファイルでではなく、あなたがそこにある全体のディレクトリーで一連のテキストを変えたいと言って下さい。そこであなたが見つける必要があって、そして“wine”を“champagne”と取り替える多くのテキスト・ファイルがあります。

#は見つけます。-maxdepth 1-名前“*.txt”-タイプf-管理職sed-i’s/wine/champagne/’{}\

私たちは、カレント・ディレクトリのすべてのテキスト・ファイルのリストを得るために、発見コマンドを使います。That’s“find。-maxdepth 1-名前“*.txt”-タイプf”は分けます。“find.maxdepth 1″は、コンピュータにカレント・ディレクトリをのぞいて見るようにいって、そしてカレント・ディレクトリほどには深く行きません。‘-name”*.txt”‘部分は、発見に“.txt”の拡張でファイルを単にリストアップするようにいいます。それから、“-type f”セクションは、“find”がファイルとまさにマッチして単につつくことを示します。最後に“-exec”部分は、“find”に後から続くコマンドを実行するようにいいます、そして、それは、この場合、テキストを取り替える“sed”コマンドです- “sed-i’s/wine/champagne/’{}\”。

私は、上記のコマンドが複雑であるようであることを理解します。しかし、一旦少しそれを使うならば、あなたは、それが、たぶんそれを下へ書きとめてそれを使う価値があることを理解するでしょう。今は、試しに複数のレベルのディレクトリーで一連のテキストを変えてみます。

関連郵便:
  • バックグラウンド(背景)のプロセスをNohupで動かして
  • Linuxコマンドラインからファイルをダウンロードする方法
  • あなたのLinuxマシンで日にちを定める方法
  • LinuxコマンドラインからEメールを送る方法
  • Apacheで事実上のホストをセットアップする方法
  • 毎日あなたのEメール受信箱でちょうどこれのようにシンプルなヘルプ家庭教師を得て下さい- 無料です!あなたの以下のEメールアドレスをちょうど入力して下さい:

     

    あなたは、いつでもこのEメール・サブスクリプションからいつも抜けることができます。

    ブックマークと共用

    {0 comments…今のもの付け加えて下さい }

    コメントを残して下さい

    あなたは、これらのHTMLタグと属性を使うことができます:<ひとつのhref=""タイトル=""><abbrタイトル=""><頭文字語タイトル=""><b><blockquote=を引用します""><引用して下さい><コード><デルdatetime=""><em><i><q=を引用します""><攻撃><強いです>