Regex 正则表达式-如何将两个双引号更改为一个双引号?

Regex 正则表达式-如何将两个双引号更改为一个双引号?,regex,bash,Regex,Bash,我有一串字符串: pipe 1/4"" square 3" bar 3/16"" spanner nozzle 2"" 1/2"" tube pipe with 6"" cut out 我想用正则表达式替换字符串中的2个双引号。我在一些人的帮助下尝试了一些代码,但似乎做不好 理想情况下,一旦正则化,我希望将其传递到一个$var,我可以在脚本中进一步调用它 问:用Bash执行此操作的正则表达式是什么?您可以使用sed: sed 's/""/"/g' input_file > output

我有一串字符串:

pipe 1/4"" square
3" bar
3/16"" spanner
nozzle 2"" 
1/2"" tube pipe with 6"" cut out
我想用正则表达式替换字符串中的2个双引号。我在一些人的帮助下尝试了一些代码,但似乎做不好

理想情况下,一旦正则化,我希望将其传递到一个
$var
,我可以在脚本中进一步调用它


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

您可以使用
sed

sed 's/""/"/g' input_file > output_file
或者,逐行处理输入并使用参数展开:

while read -r line ; do
    line=${line//\"\"/\"}
    echo "$line"
done < input_file
读取-r行时
;做
line=${line/\“\”/\“}
回音“$line”
完成
sed中的
/g
和扩展中的
/
具有相同的用途:它们将对一行中的所有引用应用替换。

您可以使用gawk:

echo $varName | gawk '{ gsub(/""/,"\"") } 1'
或sed命令:

echo $varName | sed 's/""/"/g'
我假设您的变量名为varName

相反,如果您需要为文件执行此操作,请执行以下操作:

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

使用:

样本输出:

pipe 1/4" square
sed的/“”/“/g”文件
echo "${var//\"\"/\"}"
pipe 1/4" square