在每对双引号之间插入字符串

时间:2020-03-15 08:20:57

标签: regex bash sed

我陷入困境,我的字符串如下所示:

-name "B_12*" -o -name "B_21*" -o -name "B_31" -o -name "B_41"

我的要求是我要转换上面的字符串,如下所示:

-name "B_12*.tar" -o -name "B_21*.tar" -o -name "B_31.tar" -o -name "B_41.tar"

我不是bash命令的专家,但我一点也不知道可以使用sed命令解决该问题。

2 个答案:

答案 0 :(得分:3)

这里唯一棘手的部分是,您需要将两个引号都匹配,以免再次匹配。对于具有-E选项支持ERE的sed发行版,只需执行以下命令即可。

sed -E 's/("[^"]*)"/\1.tar"/g' file

答案 1 :(得分:1)

此模式将匹配不带单引号的文本字符串,您所需要做的就是获取所有匹配项并执行替代查询以添加.tar

\b[A-Z][^"]+

enter image description here

相关问题