REGEX - 如何摆脱字符串开头和结尾的引号

时间:2015-12-01 02:49:41

标签: regex bash sed

有一堆字符串

"pipe 1/4" square"
"3" bar"
"3/16" spanner
2" nozzle
spare tyre

我希望从字符串的开头和使用RegEx的字符串结尾删除"标记。 我在simulator的帮助下尝试references,但似乎做不到。

问:什么是使用BASH执行此操作的RegEx?

3 个答案:

答案 0 :(得分:2)

使用此正则表达式匹配存在于行^"|"$的开头和结尾的双引号,然后将匹配替换为空字符串。

使用sed。

sed 's/^"\|"$//g' <<<$var

答案 1 :(得分:0)

尝试以下命令:

echo $var | sed 's/^(.*)"$/\1/'

这会通过管道$var运算符将变量sed传递给|命令。然后,Sed将使用括号中的组匹配替换此输入字符串。此匹配在sed中以\1的形式提供。因此,您的输入字符串减去最终引号,将由echo实际输出。

答案 2 :(得分:0)

使用Bash parameter expansion

a="\"pipe 1/4\" square\""
a="${a/#\"/}" && a="${a/%\"/}"
echo "$a"

输出:

pipe 1/4" square

说明:

${var/old/new}old替换为new中的$var
#之前的old会在$var的开头匹配。{。} %之前的old会在$var结束时匹配。