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

标签 bash unix 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",

. 之后的包裹字符串。是需要删除双引号的字符串。例如:

."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",

最佳答案

这可能对你有用(GNU sed):

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

匹配句点,后跟双引号字符串并替换为句点和减去双引号的字符串。

注意句点需要被引用/转义,否则它匹配任何字符。

关于bash - UNIX Bash - 从文件中的特定字符串中删除双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62266260/

相关文章:

linux - 如何 cat <<EOF >> 包含代码的文件?

awk - 使用 AWK 连接两个表,一个来自标准输入,另一个来自文件

bash - 使用 bash 如何在一行中获取网络设备名称和 IP 地址?

python - 在 Pycharm 2016.3 中安装 pip

linux - vCard=$(echo $REPLY | cut -d'i' -f 1) 有什么问题

bash -/usr/local/bin/ffmpeg : cannot execute binary file

unix - ${_+_} 在 BSD Makefile 中

regex - 日志提取: SED Command

linux - 在 Linux 中查找与搜索相结合以返回特定行

Bash:逐行读取文件并将每个段作为参数处理给其他程序