sedでシングルクォートの置換をするためには、特別な記述が必要です。
簡単なのは、ダブルクォートで囲む方法です。
$ cat ./singlequote.sh
#!/bin/sh
echo "hiro345's text" | sed -e "s/'//g" -
#!/bin/sh
echo "hiro345's text" | sed -e "s/'//g" -
上記スクリプトの実行は下記のようになります。
$ ./singlequote.sh
hiro345s text
hiro345s text
シングルクォートが消えていることがわかります。
ところで、どうしてもシングルクォートで囲みたいときもあります。その場合は、シングルクォートをバックスラッシュでエスケープしたものをさらにシングルクォートで囲む必要があります。
$ cat ./singlequote.sh
#!/bin/sh
echo "hiro345's text" | sed -e 's/'\''//g' -
#!/bin/sh
echo "hiro345's text" | sed -e 's/'\''//g' -
上記スクリプトの実行は下記のようになります。
$ ./singlequote.sh
hiro345s text
hiro345s text
こちらも、シングルクォートが消えていることがわかります。ダブルクォートで囲むよりも面倒ですね。
関連書籍: