我正在尝试创建一个可以使用
等命令的脚本script -c abcd test.txt
它将删除test.txt中的任何字符a
或b
或c
或d
。
这是我到目前为止的代码:
while getopts ":c:" opt; do
case $opt in
c)
sed 's/'$OPTARG'//g'
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
esac
done
但这只能消除我文件中的“abcd”,而不是a或b或c或d,而不是acdb等。 如何让SED将OPTARG视为单独的字符?
答案 0 :(得分:3)
改为使用tr
:
tr -d "$OPTARG"
将删除OPTARG中的所有字符。
或者如果你坚持使用sed,请使用字符集:
sed "s/[$OPTARG]//g"
答案 1 :(得分:0)
您需要将字符组合在一起,以便它们是character class。
ross@ross-laptop ~> cat foo
agkdjbdefghijglkthdn
ross@ross-laptop ~> sed 's/[abcd]//g' foo
gkjefghijglkthn
希望有所帮助。