2018 Jul. 20.
2018 Jul. 19.
sedの s/regexp/replacement/ におけるregexp内の文字としての\には\\とエスケープする必要がある。
ケースA(bash上のsedでうまくいかない)
Str='"wr\"ddadf\"ab",a'
Search='"wr\"ddadf\"ab"'
echo $Str | sed -e s/${Search}//
結果: "wr\"ddadf\"ab",a
(期待していた結果: ,a )
(検索文字列Searchを短くしていくと)
ケースB(うまくいかない)
Str='"wr\"ddadf\"ab",a'
Search='"wr\"ddadf\'
echo $Str | sed -e s/${Search}//
結果: sed: -e expression #1, char 15: `s' コマンドが終了していません
ケースC(Str内の\を\\とエスケープするとうまくいく)
ケースD(うまくいかない)
Str='"wr\"ddadf\"ab",a'
Search='"wr\"d'
echo $Str | sed -e s/${Search}//
結果: "wr\"ddadf\"ab",a
(期待していた結果: dadf\"ab",a )
ケースE(Str内の\を\\とエスケープするとうまくいく)
ケースF(うまくいかない)
Str='"wr\"ddadf\"ab",a'
Search='"wr\"'
echo $Str | sed -e s/${Search}//
結果: "wr\"ddadf\"ab",a
(期待していた結果: ddadf\"ab",a )
ケースG(Str内の\を\\とエスケープするとうまくいく)
Str='"wr\"ddadf\"ab",a'
Search='"wr\\"'
echo $Str | sed -e s/${Search}//
ケースH(うまくいかない)
Str='"wr\"ddadf\"ab",a'
Search='"wr\'
echo $Str | sed -e s/${Search}//
結果: sed: -e expression #1, char 8: `s' コマンドが終了していません
sedの s/regexp/replacement/ におけるregexp内の文字としての\には\\とエスケープする必要がある。
ケースA(bash上のsedでうまくいかない)
Str='"wr\"ddadf\"ab",a'
Search='"wr\"ddadf\"ab"'
echo $Str | sed -e s/${Search}//
結果: "wr\"ddadf\"ab",a
(期待していた結果: ,a )
(検索文字列Searchを短くしていくと)
ケースB(うまくいかない)
Str='"wr\"ddadf\"ab",a'
Search='"wr\"ddadf\'
echo $Str | sed -e s/${Search}//
結果: sed: -e expression #1, char 15: `s' コマンドが終了していません
ケースC(Str内の\を\\とエスケープするとうまくいく)
結果: "ab",a
Str='"wr\"ddadf\"ab",a'
Search='"wr\"d'
echo $Str | sed -e s/${Search}//
結果: "wr\"ddadf\"ab",a
(期待していた結果: dadf\"ab",a )
ケースE(Str内の\を\\とエスケープするとうまくいく)
結果: dadf\"ab",a
Str='"wr\"ddadf\"ab",a'
Search='"wr\"'
echo $Str | sed -e s/${Search}//
結果: "wr\"ddadf\"ab",a
(期待していた結果: ddadf\"ab",a )
ケースG(Str内の\を\\とエスケープするとうまくいく)
Str='"wr\"ddadf\"ab",a'
Search='"wr\\"'
echo $Str | sed -e s/${Search}//
結果: ddadf\"ab",a
ケースH(うまくいかない)
Str='"wr\"ddadf\"ab",a'
Search='"wr\'
echo $Str | sed -e s/${Search}//
結果: sed: -e expression #1, char 8: `s' コマンドが終了していません