sed問題の解答について
echo"/etc/passwd"|sed-r's@^(/.*/)[^/]+/?@1@g'.コマンドテストを入力します.結果は次のとおりです.
実は結果を見て、みんなはすべて理解しました.
何度もマッチしたのは、/etc/passwdを入力し、/etc/passwd文字列に//を含む文字列をsedでフィルタリングすることにほかならない.(/etc/passwdと入力し、//で任意の文字を含むすべての先頭文字列を、/先頭で何度も繰り返した後1で取り出すように置き換えます.)
次に、含まれる知識点について詳しく説明します.
1)まずmanマニュアルから以下の情報を得る.
2)正規表現記号:
文字
説明
^
入力文字列の開始位置を一致させます."^"文字自体にマッチするには"^"を使用します.
()
a.被修飾マッチング回数の場合、括弧中の式を全体として修飾することができるb.マッチング結果をとる場合、括弧中の式がマッチングした内容は、c.サブ式の開始位置と終了位置を単独で得ることができる.かっこを一致させるには、"("および"")を使用します.
.
改行記号()以外の任意の文字を一致させます.小数点そのものを一致させるには"."
[ ]
「複数文字」に一致する式をカスタマイズします.かっこを一致させるには、[]と]を使用します.
{ }
一致する回数の記号を修飾します.かっこを一致させるには、"{"と"}"を使用します.
*
修飾マッチング回数は0回または任意です."*"文字自体を一致させるには"*"を使用します.
?
修飾マッチング回数は0回または1回です.「?」に一致するには?文字自体は「?」を使用してください.
+
修飾マッチング回数は少なくとも1回である.「+」文字自体を一致させるには、「+」を使用します.
.*
前のすべてに一致します.
\1
sed 's@@\1@g'sedを置き換えて取り出します
三剣客の次男sedについてもっと紹介します.
[root@TFS ~]# echo "/etc/passwd"|sed -r 's@^(/.*/)[^/]+/?@\1@g'
/etc/
実は結果を見て、みんなはすべて理解しました.
何度もマッチしたのは、/etc/passwdを入力し、/etc/passwd文字列に//を含む文字列をsedでフィルタリングすることにほかならない.(/etc/passwdと入力し、//で任意の文字を含むすべての先頭文字列を、/先頭で何度も繰り返した後1で取り出すように置き換えます.)
次に、含まれる知識点について詳しく説明します.
1)まずmanマニュアルから以下の情報を得る.
echo - display a line of text
sed - stream editor for filtering and transforming text
-r, --regexp-extended use extended regular expressions in the script. #
2)正規表現記号:
文字
説明
^
入力文字列の開始位置を一致させます."^"文字自体にマッチするには"^"を使用します.
()
a.被修飾マッチング回数の場合、括弧中の式を全体として修飾することができるb.マッチング結果をとる場合、括弧中の式がマッチングした内容は、c.サブ式の開始位置と終了位置を単独で得ることができる.かっこを一致させるには、"("および"")を使用します.
.
改行記号()以外の任意の文字を一致させます.小数点そのものを一致させるには"."
[ ]
「複数文字」に一致する式をカスタマイズします.かっこを一致させるには、[]と]を使用します.
{ }
一致する回数の記号を修飾します.かっこを一致させるには、"{"と"}"を使用します.
*
修飾マッチング回数は0回または任意です."*"文字自体を一致させるには"*"を使用します.
?
修飾マッチング回数は0回または1回です.「?」に一致するには?文字自体は「?」を使用してください.
+
修飾マッチング回数は少なくとも1回である.「+」文字自体を一致させるには、「+」を使用します.
.*
前のすべてに一致します.
\1
sed 's@@\1@g'sedを置き換えて取り出します
三剣客の次男sedについてもっと紹介します.