我想使用bash脚本从给定的参数中删除(和)。请帮助我。用于删除其他spl字符的sed命令无法在此处运行
答案 0 :(得分:0)
您在评论中提供的sed
命令中只有一个额外的空格。这会导致正则表达式仅替换“加上空格”中的任何字符(例如,它会将a. b
转换为ab
,但它不会仅匹配单个.
而没有空格,因此a.b
仍为a.b
)。
您应该使用sed 's/[. ()]//g'
代替。例如:
$ echo "((ab.))(" | sed 's/[. ()]//g'
ab
请注意,这与GNU sed
一致 - 其他版本可能表现不同。
另请注意,.
不需要在此转义,因为它位于字符集([...]
)中。如果在字符集之外使用未转义,则表现为正常的单字符通配符。
答案 1 :(得分:0)
在你的例子中(评论中给出)yiu想要改变
((12234.())
至11234
现在这可以通过几种方式实现。你可以这样做
sed -e "s/[()]//g" input.txt
这将删除框括号之间的所有字符。
或者你可以这样做
sed -e "s/[^0-9]//g" input.txt
这将删除任何不是数字的字符。
更新
我尝试使用bash你没有escap点字符(。)所以你可以做这样的事情
sed -e "s/[().]//g" input.txt
答案 2 :(得分:0)
使用bash脚本:
$ cat foo.sh
#!/bin/bash
echo "${1//[(.)]/}"
运行它:
$ bash foo.sh "((12234.())"
12234