Linux(テキストエディタsed)

セド

vimと同様にテキストエディタですが、sedは行単位で編集・処理します。

主な機能: テキスト内容の追加、削除、変更、確認。より強力なのは変更操作です。

注: 正規表現はサポートでき、拡張正規表現もサポートできますが、正規表現に完全に依存しているわけではありません。

SEDの仕組み

読み取り、実行、表示の 3 つのプロセスが含まれます。

Read: テキストコンテンツを読み取った後、読み取ったコンテンツは一時バッファ(パターンスペース)に保存されます。

実行: パターン空間では、読み取ったテキストの内容に従って 1 行ずつ実行し、行番号が指定されていない限りすべての行を走査します。上から下へ順番に実行します。

表示:実行完了後、実行結果を表示し、変更が有効になると、パターンスペースの変更内容が指定したファイルに書き込まれます。操作だけならですが、

最終的にはファイルへの書き込みは行われず、結果のみが表示され、表示終了後はパターンスペース内のデータは即座に削除されます。

sed 形式と共通オプション

        sed -e 'オペレーター' ファイル 1 -e 'オペレーター' ファイル 2

        1 つのファイルのみを操作する場合は -e を追加しないでください

一般的なオプション:

-e: 条件付きアクションのオプション

-f: 入力ファイルの内容を処理するスクリプト ファイルを指定します。スクリプトにコマンドを記述し、スクリプト内のコマンドを使用して 2 番目のファイルの内容を処理します。

-i: すぐに注意して使用してください。

-n: スクリプト処理後の結果を表示(sedのデフォルト出力は禁止)

演算子: 一重引用符を使用する必要があります '' 

s: 指定された文字を置き換えます

d: 削除、指定した行を削除します

a: 増加、指定された内容を現在の行の下に挿入します

i: 増加、指定した内容を指定した行の上に挿入します

c: 置換、行全体を置換

y: 置換、文字を置換しますが、置換前後の文字の長さは同じでなければなりません。

p: print (sed はデフォルトで出力を持っています)

r: 拡張正則化を使用する

sedの操作

SEDチェック機能

sed は指定された行を出力し、アドレス指定を出力します。

sed -n '4p' ファイル名 # 4行目を出力

sed -n '$p' ファイル名 #最後の行を直接出力

方法 2: 行番号の範囲間隔を出力する

sed -n '1,3p' ファイル名 #1行目から3行目までを出力

sed -n '2,$p' ファイル名 # 2行目から最終行までを出力

sed -n '2p;$p' ファイル名: 2 行目から最終行までを出力します。

行番号の範囲は次のように出力されます: 、 to ; および

奇数行と偶数行を印刷します。

sed -n 'n;p' ファイル名 (n は最初の行をスキップし、n は 2 行目をスキップします)

テキストフィルターモード:

最初に: 指定された文字列を含むコンテンツを出力します。

sed -n '/o/p' ファイル名

sed -n '/big/p' ファイル名 #big を含むすべての行が出力されます

基本的な正規表現を適用して印刷します。

sed -n '/^root/p' /etc/passwd #root で始まる行を出力します

sed -n '/bash$/p' /etc/passwd #bashで終わる行を出力します


 

sed削除

削除する行番号を指定します。

sed -n '3d;p'filename#3 行目の内容を削除し、残りの内容を出力します。

sed -n '1d;3d;p' ファイル名 #1 行目と 3 行目の内容を削除し、残りの内容を出力します。

sed -n '1d, 3d;p' ファイル名 # 1 行目から 3 行目までの内容を削除し、残りの内容を出力します。

(、は~を意味します; を意味し、そして)

sed '/big/d' ファイル名 # 削除する文字列の内容 (big) に一致

セド '/o/! d' ファイル名 # 文字列の内容 (o) と一致し、o を除くすべてを削除します

正規表現を使用して削除します。

sed '/^$/d' ファイル名 #空白行を削除

sed の交換 (強調!!)

■ 置換文字列:

sed -n 's/root/test/p' /etc/passwd #現在の行の最初のルートを test に置き換えます

sed -n 's/root/test/gp' /etc/passwd #現在の行のすべてのルートを test に置き換えます

置換に使用するアルファベットの大文字と小文字:

l&: 特殊記号を小文字に変換し、再度使用する場合はエスケープ文字が必要です。

u&: サイズに変換される特殊記号。使用する場合はエスケープ文字が必要です

g: すべてを置換します。追加されていない場合は、最初の文字のみを置換します。

sed 's/[az]/\u&/' 123.txt

c を使用して行全体を置き換えます。

sed '/置換される行/c 置換されるコンテンツ' ファイル名

y 単一文字置換:

sed 'y/'

sedの追加

a 次の行に追加: sed '/指定された行/追加されたコンテンツ' ファイル名

i 前の行に追加: sed '/指定された行/i コンテンツを追加' ファイル名

r は、指定されたファイルの行番号の内容を読み取ります (行の後に追加します)。

sed '/元のファイルの現在行の下/r 内容を読み取るファイル' は、操作の対象となるファイルを指定します

指定した時間内のログを表示します。

sed -n '/Jul 20 18:36:12/,/Jul 20 18:50:01/p' /var/log/messages 

面接の質問

1. ファイルが大きすぎる場合はどうすればよいですか?

方法 1:split -l 行ごとに切り取って処理する (大きなファイルに適しています)

方法 2: cat ファイル名 | sed 処理 (中サイズのファイルの場合)

2. ファイルを入力せずにファイルの内容を削除する方法 (つまり、対話なしで削除する)

方法 1: sed -i 'd' ファイル名

方法 2: cat /dev/null > ファイル名

おすすめ

転載: blog.csdn.net/ZZZ_CCC01/article/details/131941549