Linux学習用のsed置換コマンドの強化版

参考記事:「シェルプログラミング – Sed」
cat /etc/redhat-releaseでオペレーティングシステムがCentOS Linux release 7.6.1810uname -rカーネルのバージョンが3.10.0-957.el7.x86_64バージョンが であることbash --versionがわかりますbash4.2.46(2)
ここに画像の説明を挿入

echo 'a : 1 : good ::::' >> sedplustest.txt
echo 'b : 2 : well ::::' >> sedplustest.txt
echo 'c : 3 : food ::::' >> sedplustest.txt
echo 'd : 4 : hood ::::' >> sedplustest.txt
echo 'e : 5 : bell ::::' >> sedplustest.txt
echo 'o : 6 : toll ::::' >> sedplustest.txt

上記のコマンドを使用して、次の内容を入力します。

a : 1 : good ::::
b : 2 : well ::::
c : 3 : food ::::
d : 4 : hood ::::
e : 5 : bell ::::
o : 6 : toll ::::

に書き込みsedplustest.txtファイルの内容cat sedplustest.txtを確認します。sedplustest.txt
ここに画像の説明を挿入

グローバルな代替品

sedデフォルトでは、パターン空間内で初めて一致した文字列のみが処理されます。sed 's/:/!/' sedplustest.txt各行の最初の部分のみが:に置き換えられ!、各行の 2 番目の部分は:変更されないことがわかります。実行sed 's/:/!/' sedplustest.txt後もsedplustest.txt変化しません。ファイルの内容は変更されませんが、
ここに画像の説明を挿入
sed 's/:/!/g' sedplustest.txt各行のすべてが に:置き換えられます。!sedplustest.txt
ここに画像の説明を挿入

フラグビット

sed s/oldstring/newstring/标志位、フラグは次のようになります。

一致と置換の数を示す数値。
g上記のグローバル置換の効果と同様に
p
sed -n 'command' [FILE]... を印刷すると、印刷が抑制され
w file、パターン スペースの内容が に出力されますfile

番号

sed 's/:/!/2' sedplustest.txt各行2の最初の一致を に:変更できます!
ここに画像の説明を挿入
sed 's/:/!/6' sedplustest.txt各行6の最初の一致を に:変更できます!
ここに画像の説明を挿入

印刷する

sed 's/a/!/p' sedplustest.txt内容に応じた行が繰り返し印刷されます。
ここに画像の説明を挿入

sed 's/a/!/' sedplustest.txt内容の一致・不一致に関わらず各行が出力されます。sed -n 's/a/!/' sedplustest.txt内容が一致するかどうかにかかわらず、行は出力されません。sed -n 's/a/!/p' sedplustest.txt一致するコンテンツの行を出力します。コマンドはオプションと組み合わせて使用​​するのがp最適です。-n
ここに画像の説明を挿入

パターンスペースコンテンツ出力ファイル

sed -n 's/a/!/w record.txt' sedplustest.txt最初に一致したコンテンツを にa置き換え!て出力しますrecord.txt
ここに画像の説明を挿入
sed -n 's/a/!/pw testpw.txt' sedplustest.txt最初に一致したコンテンツを にa置き換えて!、画面とtestpw.txtファイルに出力します。
ここに画像の説明を挿入

sed -n 's/:/!/gpw testgpw.txt' sedplustest.txtに一致する各行の内容をすべて:置き換えて!、画面とtestgpw.txtファイルに出力します。
ここに画像の説明を挿入

アドレッシング

アドレス指定形式には次の形式があります。

/正则表达式/s/oldstring/newstring/标志位
行号s/oldstring/newstring/标志位行番号と正規表現を組み合わせて使用​​して$、最後の行を示すことができます。

/正規表現/s/oldstring/newstring/flag

sed '/^e/s/:/!/' sedplustest.txtで始まる行と一致し、すでにe一致している行の最初の一致を に:変更できます!
ここに画像の説明を挿入

行番号 s/oldstring/newstring/flag

sed '3s/:/!/' sedplustest.txt最初に 3 行目を一致させてから、すでに一致している行の最初の一致を:に変更できます!
ここに画像の説明を挿入

行番号と正規表現の混在

sed '/^e/,6s/:/!/' sedplustest.txteで始まる行を最初の行に一致させ、すでに6一致した行の最初の一致を に:変更します!
ここに画像の説明を挿入

グループ

これは、正規表現に一致した後に複数のコマンドを実行することです。たとえば、 です/正则表达式/{s/oldstring/newstring/标志位;s/oldstring/newstring/标志位
sed -n '/^e/{s/:/!/;s/e/a/2p}' sedplustest.txtで始まる行と一致し、e最初の一致を に:変更し、次に!2 番目の一致を にe変更できますa
ここに画像の説明を挿入

sed スクリプト ファイル

echo '3s/:/!/' > sfile.sed3s/:/!/に書き込んでsfile.sedコマンド操作としてsed -f sfile.sed sedplustest.txt使用した内容を使用し、 3 行目の最初に一致した部分を に置き換えますsfile.sedsedplustest.txt:!
ここに画像の説明を挿入

この記事は8月8日目の学習ノートで、内容はGeek Timeの「Linux実践スキル100講座」から引用しています。

おすすめ

転載: blog.csdn.net/qq_42108074/article/details/132113921