使用sed删除双引号,但仅当它们成对时才删除

时间:2017-12-19 15:48:58

标签: awk sed

我有以下格式的数据

"abcde" : "Blank / Not testing",
"mnop" : "12 GB 2.5\" PPT ABC",
"wxy" : "14 TB 5\" Ant Testing PART SSD"

我想删除双引号并以下面的格式获取数据

abcde : Blank / Not testing
mnop : 12 GB 2.5\" PPT ABC
wxy : 14 TB 5\" Ant Testing PART SSD

我知道我可以删除所有“使用简单的sed但是我想删除sed仅在行的开头,之前和之后:和结束。不是任何”出现在行中间。

任何帮助

问候。

3 个答案:

答案 0 :(得分:1)

Awk 解决方案:

awk '{ gsub(/^"|",?$/,""); sub(/" : "/," : ") }1' file

输出:

abcde : Blank / Not testing
mnop : 12 GB 2.5\" PPT ABC
wxy : 14 TB 5\" Ant Testing PART SSD

答案 1 :(得分:1)

如果你想删除所有"除了使用GNU sed的转义邮件:

sed -E 's/(^|[^\])"/\1/g' file

答案 2 :(得分:0)

你也可以试试这个sed

sed -E 's/"([^"]*)"([^"]*)"(.*)",*/\1\2\3/' infile