RegEx - 如何将两个双引号更改为一个双引号?

时间:2015-12-01 08:50:35

标签: regex bash

我有一堆字符串:

pipe 1/4"" square
3" bar
3/16"" spanner
nozzle 2"" 
1/2"" tube pipe with 6"" cut out

我想用Regex替换字符串中的2个双引号。我已经在一些references的帮助下尝试了一些代码,但似乎做不到。

理想情况下,一旦注册了RegEx,我想将其传递给$var,我可以在我的脚本中进一步调用。

问:用Bash执行此操作的正则表达式是什么?

3 个答案:

答案 0 :(得分:2)

您可以使用sed

sed 's/""/"/g' input_file > output_file

或者,逐行处理输入并使用参数扩展:

while read -r line ; do
    line=${line//\"\"/\"}
    echo "$line"
done < input_file
sed中的

/g和扩展中的//用于同一目的:他们将在一行的所有匹配项上应用替换。

答案 1 :(得分:1)

使用Bash parameter expansion

echo "${var//\"\"/\"}"

示例输出:

pipe 1/4" square

答案 2 :(得分:0)

你可以使用gawk:

echo $varName | gawk '{ gsub(/""/,"\"") } 1'

或sed命令:

echo $varName | sed 's/""/"/g'

我假设你的变量名为varName。

相反,如果你需要这个文件:

gawk '{ gsub(/""/,""") } 1'  fileName

 sed 's/""/"/g' fileName