Linuxでよく使われるsedコマンド
sedは、テキスト処理において非常に重要なツールであり、正規表現と完璧にマッチして使用することができます。処理の際、現在処理されている行を一時バッファに格納し、「モード空間」と呼び、バッファの内容をsedコマンドで処理し、処理が完了したら、バッファの内容を画面に送ります。次の行を処理して、ファイルの最後まで繰り返します。ファイルの内容は変更されていません。リダイレクトメモリを使って出力を保存しない限り。Sedは主に1つ以上のファイルを自動編集するために使用されます。文書に対する繰り返しの操作を簡略化する。変換プログラムなどを作成します。
sedのオプション、コマンド、代替フラグ
コマンドの書式
ファイル:処理するテキストファイルのリストを指定します。
sedコマンド
置換操作:sコマンド
テキストの文字列を置換:
サフィックス/gタグを使うと、各行のすべてのマッチを置換します。
以上のコマンド中の文字/sedでデリミタとして使用します。任意のデリミタも使用できます。
空白行を削除:
正規表現\w\+は単語ごとにマッチします。[&]を使って置換します。&前にマッチした単語に対応します。
与えられたスタイルの一部にマッチします。
sed表現は単引用符を使用して参照できますが、変数文字列が表式内に含まれている場合は、ダブル引用符が必要です。
テンプレートtestとcheckで決められた範囲のすべての行が印刷されます。
-eオプションは、同じ行に複数のコマンドを実行することができます。
と-e等価のコマンドは--expression:
fileの内容が読み込まれて、testと一致する行の後ろに表示されます。複数行にマッチすると、fileの内容は全ての整合行の下に表示されます。
exampleにtestを含むすべての行がfileに書き込まれます。
this is a testラインをtest先頭のラインの後ろに追加します。
this is a testラインをtest先頭のラインの前に追加します。
testがマッチングされた場合は、該当行の次の行に移動し、この行のaを置換して、bbになり、行を印刷してから継続する。
1~10行のすべてのabcdeを大文字に変換します。なお、正規表現の元文字はこのコマンドを使用できません。
10行目を印刷したら、sedを終了します。
sedでファイルを処理する時、各行はモード空間という一時的なバッファに保存されます。行が削除されたり、出力がキャンセルされたりしない限り、処理されたすべての行はスクリーンに印刷されます。モード空間が空になり、新しい行に保存して処理を待つ。
保持と互換:hコマンドとxコマンド
モード空間を交換し、バッファの内容を保持します。つまりtestとcheckを含む行を交換します。
sedスクリプトはsedのコマンドリストで、Sedを起動するときは-fオプションでスクリプトファイル名をガイドします。Sedはスクリプトに入力されたコマンドに対して非常に難癖があり、コマンドの末尾に空白やテキストがあってはいけません。1行に複数のコマンドがある場合は、セミコロンで区切ります。萼頭の行為で行を注釈し,しかも行をまたぐことができない。
方法1:
以上は小编が皆さんに绍介したLinuxのsed命令です。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに皆さんに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。
sedのオプション、コマンド、代替フラグ
コマンドの書式
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
オプション
-e<script> --expression=<script>: script ;
-f<script > --file=<script >: script ;
-h --help: ;
-n --quiet ――silent: script ;
-V --version: 。
パラメータファイル:処理するテキストファイルのリストを指定します。
sedコマンド
a\ 。
i\ 。
c\ 。
d , 。
D 。
s
h 。
H 。
g , 。
G , 。
l 。
n , 。
N , 。
p 。
P( ) 。
q Sed。
b lable , 。
r file file 。
t label if , , T,t , , 。
T label , , T,t , , 。
w file file 。
W file file 。
! 。
= 。
# 。
sed置換マーク
g 。 p 。 w 。 x 。
y ( )\1 &
sed元文字セット
^ , :/^sed/ sed 。
$ , :/sed$/ sed 。
. , :/s.d/ s , d。
* 0 , :/*sed/ sed 。
[] , /[ss]ed/ sed Sed。
[^] , :/[^A-RT-Z]ed/ A-R T-Z , ed 。
\(..\) , , s/\(love\)able/\1rs,loveable lovers。
& , s/love/**&**/,love **love**。
\< , :/\<love/ love 。
\> , /love\>/ love 。
x\{m\} x,m , :/0\{5\}/ 5 0 。
x\{m,\} x, m , :/0\{5,\}/ 5 0 。
x\{m,n\} x, m , n , :/0\{5,10\}/ 5~10 0 。
sed用法例置換操作:sコマンド
テキストの文字列を置換:
sed 's/book/books/' file
-nオプションとpコマンドは、置換された行のみを印刷することを表します。
sed -n 's/test/TEST/p' file
直接ファイルオプション-iを編集すると、fileファイルの各行の最初のbookにマッチします。
sed -i 's/book/books/g' file
マークgを全面的に置換サフィックス/gタグを使うと、各行のすべてのマッチを置換します。
sed 's/book/books/g' file
N番目の整合から置換を開始する必要がある場合、/Ngは使用できます。
echo sksksksksksk | sed 's/sk/SK/2g'
skSKSKSKSKSK
echo sksksksksksk | sed 's/sk/SK/3g'
skskSKSKSKSK
echo ksksksksksk | sed 's/sk/SK/4g'
skskskSKSKSK
デリミタ以上のコマンド中の文字/sedでデリミタとして使用します。任意のデリミタも使用できます。
sed 's:test:TEXT:g'
sed 's|test|TEXT|g'
デリミタがスタイルの内部に現れる場合は、転送が必要です。
sed 's/\/bin/\/usr\/local\/bin/g'
削除操作:dコマンド空白行を削除:
sed '/^$/d' file
ファイルの2行目を削除します。
sed '2d' file
ファイルの2行目から末尾までのすべての行を削除します。
sed '2,$d' file
ファイルの最後の行を削除:
sed '$d' file
ファイルのすべての先頭はtestの行です。
sed '/^test/'d file
マッチした文字列タグ&正規表現\w\+は単語ごとにマッチします。[&]を使って置換します。&前にマッチした単語に対応します。
echo this is a test line | sed 's/\w\+/[&]/g'
[this] [is] [a] [test] [line]
192.168.0.1で始まるすべての行は、それ自体に置き換えられます。
sed 's/^192.168.0.1/&localhost/' file
192.168.0.1localhost
サブストリングマッチングマーク\1与えられたスタイルの一部にマッチします。
echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/'
this is 7 in a number
コマンド中digit 7は、7に置き換えられました。スタイルにマッチしたサブストリングは7で、'(.\)はサブストリングに用いられ、マッチングした最初のサブストリングには\1としてマークされ、これに類推してマッチングした第二の結果は\2である。
echo aaa BBB | sed 's/\([a-z]\+\) \([A-Z]\+\)/\2 \1/'
BBB aaa
loveは1としてマークされ、すべてのloveableはlove rsに置き換えられ、プリントアウトされます。
sed -n 's/\(love\)able/\1rs/p' file
複数の表現を組み合わせる
sed ' ' | sed ' '
:
sed ' ; '
参照sed表現は単引用符を使用して参照できますが、変数文字列が表式内に含まれている場合は、ダブル引用符が必要です。
test=hello
echo hello WORLD | sed "s/$test/HELLO"
HELLO WORLD
選択した行の範囲:テンプレートtestとcheckで決められた範囲のすべての行が印刷されます。
sed -n '/test/,/check/p' file
5行目から最初の行までを含むすべての行を印刷します。
sed -n '5,/^test/p' file
テンプレートtestとwestの間の行について、各行の末尾は文字列aa bbで置換される:
sed '/test/,/west/s/$/aaa bbb/' file
多点編集:eコマンド-eオプションは、同じ行に複数のコマンドを実行することができます。
sed -e '1,5d' -e 's/test/check/' file
上のsed式の第1条のコマンドは1行から5行まで削除され、第2条のコマンドはtestをcheckで置換します。コマンドの実行順序は結果に影響を与えます。両方のコマンドが置換コマンドである場合、最初の置換コマンドは第二の代替コマンドの結果に影響を及ぼします。と-e等価のコマンドは--expression:
sed --expression='s/test/check/' --expression='/love/d' file
ファイルから読み込み:rコマンドfileの内容が読み込まれて、testと一致する行の後ろに表示されます。複数行にマッチすると、fileの内容は全ての整合行の下に表示されます。
sed '/test/r file' filename
書き込みファイル:wコマンド exampleにtestを含むすべての行がfileに書き込まれます。
sed -n '/test/w file' example
追加(行下):a\コマンドthis is a testラインをtest先頭のラインの後ろに追加します。
sed '/^test/a\this is a test line' file
test.co nfファイルの2行目の後に、this is a test lineを挿入します。
sed -i '2a\this is a test line' test.conf
挿入(行):i\コマンドthis is a testラインをtest先頭のラインの前に追加します。
sed '/^test/i\this is a test line' file
test.co nfファイルの5行目の前に、this is a test lineを挿入します。
sed -i '5i\this is a test line' test.conf
次:nコマンドtestがマッチングされた場合は、該当行の次の行に移動し、この行のaを置換して、bbになり、行を印刷してから継続する。
sed '/test/{ n; s/aa/bb/; }' file
変形:yコマンド1~10行のすべてのabcdeを大文字に変換します。なお、正規表現の元文字はこのコマンドを使用できません。
sed '1,10y/abcde/ABCDE/' file
終了:qコマンド10行目を印刷したら、sedを終了します。
sed '10q' file
保持と取得:hコマンドとGコマンドsedでファイルを処理する時、各行はモード空間という一時的なバッファに保存されます。行が削除されたり、出力がキャンセルされたりしない限り、処理されたすべての行はスクリーンに印刷されます。モード空間が空になり、新しい行に保存して処理を待つ。
sed -e '/test/h' -e '$G' file
この例では、testと一致する行が見つかったら、モード空間に格納し、hコマンドはこれをコピーしてキャッシュエリアを保持するという特殊なバッファ領域に保存します。第二条文の意味は、最後の行に到達したら、Gコマンドは保持バッファの行を取り出し、それをモード空間に戻し、現在すでにモード空間に存在している行の末尾に追加するということです。この例では最後の行に追加されます。簡単に言えば、testを含む行はすべてコピーされ、ファイルの末尾に追加されます。保持と互換:hコマンドとxコマンド
モード空間を交換し、バッファの内容を保持します。つまりtestとcheckを含む行を交換します。
sed -e '/test/h' -e '/check/x' file
スクリプトスクリプトスクリプトスクリプトsedスクリプトはsedのコマンドリストで、Sedを起動するときは-fオプションでスクリプトファイル名をガイドします。Sedはスクリプトに入力されたコマンドに対して非常に難癖があり、コマンドの末尾に空白やテキストがあってはいけません。1行に複数のコマンドがある場合は、セミコロンで区切ります。萼頭の行為で行を注釈し,しかも行をまたぐことができない。
sed [options] -f scriptfile file(s)
奇数行または偶数行を印刷します。方法1:
sed -n 'p;n' test.txt #
sed -n 'n;p' test.txt #
方法2:
sed -n '1~2p' test.txt #
sed -n '2~2p' test.txt #
マッチする文字列の次の行を印刷します。
grep -A 1 SCC URFILE
sed -n '/SCC/{n;p}' URFILE
awk '/SCC/{getline; print}' URFILE
締め括りをつける以上は小编が皆さんに绍介したLinuxのsed命令です。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに皆さんに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。