UNIX Bash - 从文件中特定字符串中删除双引号

3

如果我排版很差,对不起,因为我以前没有在这里发布过。

我正在尝试编辑一个文件,以删除包裹在多个长度不同的字符串周围的双引号。其中一些字符串包括大写字母和空格,通常我会使用全局搜索和替换,但是有些字符串不能去掉双引号,因为它们是必需的。

这个文件的摘录在这里:

"tplan"."external_plan_ref" "Plan ID",
            'CMP' CMP,
            "bd"."NAME" "Business Divison",
            "reg"."NAME" "Region",
            placeholder1 "Placeholder 1",
            "ct"."COUNTRY_NAME" "COUNTRY",
            city "City",
            placeholder2 "Placeholder 2",
            placeholder3 "Placeholder 3",
            placeholder4 "Placeholder 4",

点号后的被包装的字符串是需要去掉双引号的字符串。例如:

."NAME"

我尝试使用awk和sed与正则表达式识别需要替换的内容,然后进行替换,但是我没有成功并且很难理解。如有任何建议或推荐,将不胜感激。谢谢!

 "tplan".external_plan_ref "Plan ID",
            'CMP' CMP,
            "bd".NAME "Business Divison",
            "reg".NAME "Region",
            placeholder1 "Placeholder 1",
            "ct".COUNTRY_NAME "COUNTRY",
            city "City",
            placeholder2 "Placeholder 2",
            placeholder3 "Placeholder 3",
            placeholder4 "Placeholder 4",

请在您的问题中添加所需输出(无描述)的示例输入(无评论)。 - Cyrus
1个回答

5

这可能适用于您(GNU sed):

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

匹配一个句号,接着是一个用双引号括起来的字符串(s),然后替换为一个句号和该字符串去除双引号。

注意:需要对句号进行转义/引号处理,否则它将匹配任何字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接