需要在文本前面获取引号而不使用任何转义字符和 gsub

需要在文本前面获取引号而不使用任何转义字符和 gsub

我有一个名为tst.csv以下内​​容的文件

"FORESS INTL PTN "A" (208)"

需要获得以下输出,要求是我们不应该使用任何转义字符 ( \) 并且gsub/sub只需要用于实现以下预期输出 - 因为我们使用的外部程序不会解码反斜杠字符。

预期产出

"FORESS INTL PTN ""A"" (208)"

尝试了以下命令

awk '{gsub(/"/,"&&");gsub(/^""|""$/,"")}1' tst.csv

我得到以下o/p

FORESS INTL PTN ""A"" (208)

但无法在文本前面或行尾获得双引号。

答案1

简单地:

gsub(/"/, "&&"); gsub(/^"|"$/, "")

"在不使用反斜杠的情况下将 a 放入 awk 变量中,您始终可以执行以下操作:

awk -v q='"' ...

或者在awk(假设基于 ASCII 的系统)中:

BEGIN {q = sprintf("%c", 34)}

答案2

使用以下命令替换""开头和结尾处的双精度数"

gsub(/^""|""$/, "\"")

(尽管这使用了转义字符)或仅删除"开头和结尾处的最外层

gsub(/^"|"$/, "")

答案3

尝试使用下面的 sed 命令,效果很好

  echo '"FORESS INTL PTN "A" (208)"'| sed "s/\"A\"/\"&\"/g"

输出

    "FORESS INTL PTN ""A"" (208)"

Python

raveen:/var/tmp$ cat o.py 
#!/usr/bin/python
k=open('p.txt','r')
for i in k:
    print i.replace('"A"','""A""')

相关内容