我正在尝试创建一个可以使用等命令的脚本
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作为单独的字符读取?
改用tr
:
tr -d "$OPTARG"
将删除OPTARG中的所有字符。
或者,如果您坚持使用sed,请使用字符集:
sed "s/[$OPTARG]//g"
您需要将字符分组在一起,使它们成为一个字符类。
ross@ross-laptop ~> cat foo
agkdjbdefghijglkthdn
ross@ross-laptop ~> sed 's/[abcd]//g' foo
gkjefghijglkthn
希望能有所帮助。