sedコマンドについて知りたい
たとえば、次のコマンドがあります。
rtNum=`pwd | sed -e 's/^.*bbsp.\/rt//' -e 's/\/.*$//'`
そして
rtRun=`pwd | sed -e 's/^.*bbsp.\/rt.*\///'`
ここで pwd は次のようになります。/tfsrun/bbsp2/rt3/run
生成される出力は次のとおりです。
echo $rtNum
3
そして
echo $rtRun
run
-e
上記のsedコマンド、特に上記のsedコマンドでは、/、//および///の使い方と使い方を理解したいと思います。
ベストアンサー1
マニュアルに記載されているように、この-e
オプションはスクリプトが続くことを示します。スクリプトは正規表現を使用して、一致するコンテンツを空の文字列に置き換えます。
正規表現を理解するには、次を読むのに十分な時間を費やすことをお勧めします。https://www.tutorialspoint.com/unix/unix-regular-expressions.htm
あなたの質問に:
\/
スラッシュはエスケープされていますか?これは区切り文字として扱われないことを意味します。
/
一致文字列とターゲット文字列を区切る区切り文字です。
たとえば、's/matchingstring/targetstring/'
s 呼び出しは一致する文字列の最初の項目をターゲット文字列に置き換えます。
あなたの場合:
'//'
区切り文字の間に何もないため、ターゲット文字列が空であることを示します。'///'
実際にそうです。'\///'
これは、一致文字列がスラッシュで終わり、ターゲット文字列が空であることを意味します。