詳細sedコマンドの使用方法と、正規表現のメタ文字

sedコマンドの使用法

SEDは、それは完全に異常な使用に正規表現を、合うことができる非常に便利なテキスト処理ツールです、ストリームエディタです。処理時に、現在処理中のラインが、一時バッファに記憶されている「パターン・スペース」(パターンスペース)と呼ばれ、バッファsedコマンド処理の内容を処理しているが完了すると、バッファの内容が画面に送られます。次に、ファイルの最後まで繰り返され、次の行、。あなたは、出力を保存するためにリダイレクトを使用しない限り、ファイルの内容は、変更されません。主に自動編集一つ以上のファイルに使用SED、ファイル操作は、変換手続きの準備を簡素化するために繰り返されます。

1.はじめに

非対話型のエディタをsedの。あなたが結果を保存するために、シェルのリダイレクトを使用しない限り、それは、ファイルを変更しません。デフォルトでは、すべての出力行が画面に印刷されます。

行(または入力)を処理し、ファイルエディタをsedは、画面に結果を送信します。まず、現在の一時バッファ領域に格納され処理されているsedの行(また空間モードとも呼ばれる)、及び一時バッファの行の処理、画面への送信が完了した後の行:具体的なプロセスは以下の通りです。各行は、次いで、次の行を読み取る、一時バッファから削除する処理を終了SED
処理および表示。入力ファイルの最後の行を処理した後、実行を終了さsedは。各行は、このコピーエディタ、一時バッファの存在をセッドので、元のファイルは変更されません。

2.アドレッシング

アドレッシングは、編集する行を決定するために使用されます。アドレスは、デジタル形式、正規表現、または両方の組み合わせであってもよいです。アドレスが指定されていない場合、sedのは、すべての入力ファイルの行を処理します。

アドレスは、行番号を示す数値であり、「$」記号は、それが最後の行ことを示しています。たとえば、次のようにsedの-n '$ P' の/ etc /問題 

3.コマンドとオプション

sedのsedコマンドは、アドレスが、プロセスはすべての入力行を指定されていない場合は、アドレスで指定された各入力行を処理する方法について説明します。

3.1 sedコマンド

A \

現在の行の後一つ以上の行を追加します。最後を除く複数の行は、ファイルの各行の終わりには、私たちは本当にテキストを変更したい場合は行継続-aは、それが必要なだけのショーであることを「\」が必要SED -i.bak「」これはBAK形式で出てきますこのファイルは、ソースファイルであります

[ルート@ entos74アプリ#cat -N passwd.txt | '10、20aは\ 11 adadadadadadaをセッド

C \

また、このシンボルの新しいテキストの後のテキストの現在の行インチ 最後を除く複数の行は、各行の末尾に「\」行継続を必要と

猫-n passwd.txt | sedの '10C \ XXXXXXXXXXXXXXXXXX'

  私は\
    現在の行の前に挿入するテキスト。最後を除く複数の行は、各行の終わりには、行継続「\」が必要
    SED「10iを\ xxxxxxxxxxxxxxxxxx」| CAT -n passwd.txtは
  D
  のSS -ntl | sedの「1D」最初の行の削除:削除行は
  時間
  モードバッファステージングの内容をコピーする空間   
  H
  一時バッファの内容をパターンスペースには追加され
  、Gは、
  古いコンテンツを上書きし、パターンスペースに一時バッファの内容をコピー
  G用
  テンポラリバッファの内容をスペースに追加モードは、元のコンテンツに付加され
  たp
 現在の印刷モード、空間コンテンツの後、デフォルトの出力に加算される
  N
  次の入力行を読み取って、第1のコマンド処理からの次のコマンドがそれに開始しない
  Qの
  端をまたは終了セッド
  R&LT
  ファイル入力ラインから読んで
  !
  選択された行のアプリケーションコマンド以外のすべての行
  sが
  別の文字列に置き換え
  グラム
  セッド| passwd.txt -n CAT:インライングローバル別  の@ / binに/ bashの$/ sbinに/ nologinに@ G '
  ワット
  書き込み線選択されたファイル:セッド「/ ^ lixiaozi / W /app/lixiaozi.txt」passwd.txt 
  Xの
  交換の一時バッファの内容とモデル空間の
  yが
  別の文字(いない通常の上に文字を置き換えます式)Yコマンドを使用し  

3.2 sedのオプション

  オプション
  機能
  -e
  すなわち、複数の入力ラインアプリケーションのコマンドの使用はSED、複数の編集を行う
  -n
  デフォルトの出力がキャンセル
  -f
  sedスクリプトのファイル名を指定します

4.終了状態

かかわらず、指定されたパターンを見つけるかどうかの、同じにないのgrep sedは、その終了ステータスが0です。構文エラーコマンドがある場合にのみ、の終了ステータスは、それが0ではなかったのsed。

正規表現のメタ文字

  grepのと同じように、sedのは、パターン検索のための特別なメタ文字をサポートし、交換してください。それ以外は、sedの使用正規表現パターンは、斜線で「/」の間で囲まれています。

正規表現は、このようなOなどの別の文字に「/」区切り記号必要がある場合は、単に正規表現文字、話にこの文字に追いつくために、本の前にバックスラッシュ文字を追加します。たとえば、次のようにsed -n「\ O ^ Myop 」データ・ファイルの
    メタキャラクタの
  機能
  の一例
  ^
  行のロケータ
  / ^私の/一致した私で始まるすべての行
  の$
  行ロケータの終わり
  すべての行を私のマッチを終了/私の$ /
  。
  マッチ除く単一改行文字
  の任意の2つの文字に続く文字を一致/m..y/含むが、M、文字Yの行を話す
  *
  マッチがゼロ個以上の先行文字の
  /私* /マッチングゼロ続いて、文字をM含みます文字の1つまたは複数の行のy
  []
  マッチはの文字セット内の任意の文字を指定
  行/ [mm]のY /マイ一致または私の構成
  [^]
  一致する文字セットの任意の文字を指定しない
  / [^ mm]をY /マッチングはYを含むが、文字が直線yの前にMまたはMではないこと
  \(.. \)
  一致した文字を保存します
  1,20s / \(もし\)自己 / \ 文字要素をマーキング1R /間のパターン、およびラベルとして保存し、あなたはそれを参照するために1 \使用することができます。左から番号9つのラベル、まで定義することができ、一番左が最初です。この例では、第二の処理への最初の20行は、あなたが見つかった場合は、お使いの置き換え、ラベルとしてyouselfを保存しています。
  &
  保存された文字列は、代替の参照文字列を検索するには
  、S /私/ **&** /&代表シンボル検索文字列。私の私の**に置き換えられます
  \ <
  最初の単語のロケータ
  / \ <マッチングワード線を備える始める私の私の/
  \>
  サフィックスロケータ
  /私\> /単語をマッチングが含まれている私の終わる行
  のxを\ {mは\}
  連続X mは
  / 9 \ {5 \} /マッチングが5連続9行含む
  X \ {Mを、\}
  少なくともM X
  / 9 \ {5、\} /マッチング含む少なくとも5個の連続図9は、線である
  X \ {M、N \}
  少なくともmではなく、以上のn X
  / 9 \ {5,7 \} / 5-7含む連続行9と一致

6.例  

6.1 pコマンド

コンテンツ表示モードのコマンド空間に対するP。デフォルトでは、画面上に印刷され、入力ライン、印刷操作をキャンセルするデフォルトのオプション-nをsedの。-nオプションとコマンドpが同時に発生した場合、sedは、選択したコンテンツを印刷することができます。  

セッド「/マイ/ P」のデータファイル
#デフォルトでは、標準出力にプリントすべての入力行をsedの。私のラインマッチングパターン場合は、pコマンドをもう一度追加の行を印刷します。
[ルート@ entos74〜] #sed -n 「3P」はfilelist.txt
のみ三行目の印刷
ディスプレイをのみ、ファイルの内容は、例えば、ラインの範囲を指定:
#ビューは、ライン30にライン20、および行番号ベルトファイル 
の猫を-n / etc / passwdファイル| sedの-n  '20、30P "

6.2 dコマンド

Dは、エントリ行を削除するためのコマンド。画面に表示された内容にパターンスペースをコピーするファイルからの入力の最初の行、およびその後のsedコマンドライン実行し、最終的にパターンスペースをsedの。あなたは、コマンドdを発行する場合は、入力行の現在のパターンスペースが削除されます、それは表示されません。

データ・ファイルの「$ D」sedの
#は、最後の行を削除し、表示され、残り
CAT -n passwd.txt | sedの「/メール/、25D」 
削除位の最初の25行の内容に「メール」の行が含ま
アドレスはカンマで区切られました、アドレスは(含まれる2本のラインを含む)は、2つの間の行の範囲に対処する必要があることです。数値の範囲、正規表現、あるいはその両方図の組み合わせで。たとえば:
セッド「2,5d」データ・ファイルの
#は5番目の行に2つ目を削除
sedの「/マイ/、/あなたによって/ D」のデータ・ファイル
「あなた」の行の間に線が含まれています。#削除あって、「私の」行

6.3秒コマンド

セッド「S / ^マイ/あなたによって/ G」のデータ・ファイル
#グラムコマンドは、行が複数マイ、マイはすべてあなたを交換している場合は表示されたと言うことですつまり、グローバル行置換の終わりを示します。  

6.4 Eオプション

-eは、複数のタスクを実行するためのsedケースを編集するためのコマンドを編集しています。次の行編集を開始する前に、すべての編集アクションはパターンバッファの行に適用されます。

SED -E '1,10d' -eさん/マイ/あなた/ G 'のデータ・ファイル

#-E複数の編集のためのオプション。最初の削除ラインに再編集した1-3。すべての私の第2の再編集したあなた置き換える表示されるように。行編集(つまり、この2つのコマンドは、パターン・スペースの現在の行で実行されている)ことによって、これらの2つのラインなので、そのためには、コマンドを編集することは結果に影響します。

コマンドW 6.5

sedの-n '/ hrwang / W me.txt' のデータ・ファイル 

6.6 \コマンド

\コマンド(すなわち、パターンバッファラインに読み込ま)ファイルバックにおける現在の行に追加された新たなテキストを追加するために追加するコマンドです。テキストの追加の行が下に別の行にsedコマンドを設置します。複数の行の内容を追加したい場合は、それぞれの行は、最後の1を除いて、バックスラッシュで終わらなければなりません。最後の行は引用符とファイル名で終了します。

セッド'/ ^ hrwang / A \
> hrwang夫とmjfan \され
たデータファイル>と妻の
一致がhrwangデータファイルのファイルを始まる行に発見された場合追加hrwangとmjfanは、下の行に、夫と妻が、#  

6.7 i\ 命令

私\コマンドは、現在の行の前に新しいテキストを挿入することです。  

6.8 C \コマンド

新しいテキストに既存のテキストを変更するには、このコマンドを使用SED。  

6.9 nコマンド

入力ファイルの次の行を取得するために、このコマンドを使用して、sedは、それがバッファモードに読み込まれ、何のsedコマンドは直ちに上下ライン一致線に印加されないであろう。

SED '/ hrwang / {N; S /私/あなた/;}' データ・ファイル

概要

上記の詳細わかるsedコマンドと正規表現のメタ文字を紹介する小さなシリーズを使用することで、我々はあなたが何か質問が私にメッセージをお願いしている場合は、小扁は、速やかに全員に返信させていただきます、助けたいと思います。これで私はまた、家庭サイトスクリプティングのサポートのために非常に感謝しています!

 

公開された133元の記事 ウォンの賞賛129 ビュー330 000 +

おすすめ

転載: blog.csdn.net/wofreeo/article/details/103812462