我陷入困境,我的字符串如下所示:
-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
命令解决该问题。
答案 0 :(得分:3)
这里唯一棘手的部分是,您需要将两个引号都匹配,以免再次匹配。对于具有-E选项支持ERE的sed发行版,只需执行以下命令即可。
sed -E 's/("[^"]*)"/\1.tar"/g' file
答案 1 :(得分:1)
此模式将匹配不带单引号的文本字符串,您所需要做的就是获取所有匹配项并执行替代查询以添加.tar
\b[A-Z][^"]+
\b[A-Z]
在范围[A-Z]中匹配一个字符 [^"]
匹配到“