首页 > 解决方案 > 从第一个点之前的子字符串中删除双引号

问题描述

我之前问过一个问题,在该问题中我需要帮助从 . (点)。我很高兴收到了答案,但是我不确定它是如何工作的。

我现在正在尝试从 . (点)。我已经尝试通过反复试验来编辑原始命令,但是我没有太多运气,到目前为止,我已经离开了最接近的命令。

有人可以解释第一个命令的工作原理和原因,如果可能的话,请帮助我编辑我的尝试,以允许它从 . (点)。

原始命令 - 从点的右侧删除“”:

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

样品之前:

"A".HELLO
A."HELLO"
"A"."HELLO"

要求的结果:

A.HELLO
A."HELLO"
A."HELLO"

试图:

sed -i 's/"*"\.\([^"]*\)"/.\1/g' $(2)

后:

"A".HELLO
A."HELLO"
"A.HELLO"

链接到原始帖子:UNIX Bash - 从文件中的特定字符串中删除双引号 感谢用户 potong 以获得原始答案。

标签: regexawksedgnu

解决方案


您能否尝试以下(如果您对 没问题awk),用 GNU 中显示的示例编写和测试awk

awk 'BEGIN{FS=OFS="."} {gsub(/"/,"",$1)} 1' Input_file

说明:制作字段分隔符和输出字段分隔符,如章节.BEGIN然后在主程序"中,在第一个字段中全局替换为 NULL,因为我们已经将.其作为字段分隔符,并且 OP 想要删除"双引号,.因此只取第一个字段就可以了。1将打印 Input_file 的当前行。


推荐阅读