ファイルのプロセッサ--sed

、sedのワークフロー

image.png

SEDは、行のコンテンツを処理し、オンラインで、非対話型のエディタです。取り扱い、現在一時バッファに処理されている行を格納、バッファsedコマンドの内容を処理し、処理は、画面に送信されたバッファの内容を終了する(パターンスペース)、「モデル空間」と呼ばれます。次に、ファイルの最後まで繰り返され、次の行、。あなたは、出力を保存するためにリダイレクトを使用しない限り、ファイルの内容は、変更されません。

SEDは、主に、自動的に1つ以上の文書を編集するために使用され、文書の繰り返し操作を簡素化し、変換プログラムを用意します

第二に、コマンドの形式

sedの[オプション] 'コマンド' ファイル(複数可)     
sedの[オプション] -fスクリプトファイルのファイル(複数可)

注意:

SEDとgrepに関係なく指定されたパターンを見つけるか否かを、その終了ステータスが0であり、同じではありません

sedの構文エラーコマンドは、ゼロ以外の終了状態である場合にのみ

正規表現のための第三に、サポート

grepのと同じように、また、正規表現(RE)と、様々なメタ文字を使用することができますsedは、ファイル内のパターンを見つけます。正規表現は、次のサポートをsedのメタ文字あり、検索と置換するために使用されるモデル間のスラッシュで囲まれています。

基本的な性格は、メタ^、$を使用して設定。、*、[]、[^]、\ <\>、\(\)\ {\}

)?(|拡張文字は元を設定し、+、{}、

メタキャラクタの拡張使用:

\ +

しかし-r

四、sedの基本的な使い方

共通のコマンド・オプション

-eは、複数の編集を可能にします
SEDは、スクリプトファイル名を指定-f
治療の結果のみを表示するには、デフォルトの出力をキャンセル-n
-iインプレース、インプレース編集
メタ文字の拡大を支援-r
-hヘルプを表示します

共通操作

A:増加は、現在の行指定されたコンテンツ以下の行を追加します。
C:置き換え、指定されたコンテンツの選択された行を置き換え
D:選択した行を削除するには、[削除]
私は:ケースを無視し、指定されたコンテンツに選択された行の上の行を挿入し、挿入します
P:プリント、ラインは、すべての印刷内容を指定されていない場合は指定された行場合は、印刷指定した行が、一方で、印字できない文字がある場合は、ASCIIコードの出力を配置します。
S:指定された文字を置き換える、置き換え
Y:文字変換
G:一時バッファの内容を削除、パターンスペースにコピーし、元のコンテンツに付加され
G:それはパターンスペース、元のコンテンツカバーにコピーし、一時的なバッファの内容を削除します
X:一時バッファの内容は、パターンスペースと交換しました
R:ファイルから読み込みます
W:ファイルに書き込まれた行

五、sedのコマンド例

コマンドを削除します:D

'3D' のデータファイル-r sedの#
#セッド-R '3 {D;}' データ・ファイル
#セッド-R '3 {D}' データ・ファイル
#sedの-r 3 '$のD' のデータ・ファイル
#のSED -r '$のD' のデータ・ファイル
#sedの-r '/北/ D' のデータ・ファイル 
#sedの-r '/ SOUT / D' のデータ・ファイル

image.png

コマンドを交換します。■

#sedの-rさん/西/北/ G 'のデータ・ファイル 
#sedの-rさん/ ^西/北/ 'のデータ・ファイル 
#sedの-rさん/ [0-9] [0-9] $ /&5 / '、データ・ファイル//&ルックアップ内容にマッチした文字列の代表
#sedの-rさん/ Hemenway /ジョーンズ/ G 'のデータ・ファイル 
#SED -r、データ・ファイルの/(3月)は/ \ 1ianne / gになりました " 
#sedの-rさん#3#88#G 'のデータ・ファイル

image.png

コマンドを読む:R

'/スアン/ Rの/ etc / NEWFILE' データ・ファイルの-r sedの# 
'2Rの/ etc / hosts' A.TXT -r sedの# 
'/ 2 / Rの/ etc / hosts' A.TXT -r sedの#

ファイルコマンドを書く:ワット

#は-r '/北/ W NEWFILE' データファイルをセッド 
#SED -r 3 '$ /new1.txt w' は、データ・ファイル

追加コマンド:A

# sed -r '2a\1111111111111' /etc/hosts
# sed -r '2a\1111111111111\
> 222222222222\
> 333333333333' /etc/hosts

插入命令:i

# sed -r '2i\1111111111111' /etc/hosts
# sed -r '2i111111111\
> 2222222222\
> 3333333333' /etc/hosts

修改命令:c

# sed -r '2c\1111111111111' /etc/hosts
# sed -r '2c\111111111111\
> 22222222222\
> 33333333333' /etc/hosts

获取下一行命令:n

# sed -r '/eastern/{ n; d }' datafile
# sed -r '/eastern/{ n; s/AM/Archile/ }' datafile

暂存合区用命令:h H g  G

# sed -r '1h;$G' /etc/hosts
# sed -r '1{h;d};$G' /etc/hosts
# sed -r '1h; 2,$g' /etc/hosts
# sed -r '1h; 2,3H; $G' /etc/hosts

暂存空间和模式空间互换命令:x

# sed -r '4h; 5x; 6G' /etc/hosts

反向选择:!

# sed -r '3d' /etc/hosts
# sed -r '3!d' /etc/hosts

多重编辑选项:e

# sed -r -e '1,3d' -e 's/Hemenway/Jones/' datafile 
# sed -r '1,3d; s/Hemenway/Jones/' datafile 
# sed -r '2s/WE/UPLOOKING/g; 2s/Gray/YYY/g' datafile
# sed -r '2{s/WE/UPLOOKING/g; s/Gray/YYY/g}' datafile

六、sed常见操作:

删除配置文件中#号注释行及空行:

# sed -ri '/^[ \t]*#/d; /^[ \t]*$/d' /etc/vsftpd/vsftpd.conf
# sed -ri '/^[ \t]*#|^[ \t]*$/d' /etc/vsftpd/vsftpd.conf
# sed -ri '/^[ \t]*($|#)/d' /etc/vsftpd/vsftpd.conf

修改文件:

# sed -ri '$a\chroot_local_user=YES' /etc/vsftpd/vsftpd.conf
# sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
# sed -ri '/UseDNS/cUseDNS no' /etc/ssh/sshd_config
# sed -ri '/GSSAPIAuthentication/cGSSAPIAuthentication no' /etc/ssh/sshd_config

给文件行添加注释:

# sed -r '2,6s/^/#/' a.txt
# sed -r '2,6s/(.*)/#\1/' a.txt
#セッド-R '2,6s /.*/#&/のコンテンツのA.TXT&の前で試合を探します


おすすめ

転載: blog.51cto.com/14475876/2441625