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

问题描述 投票:1回答:3

我有以下格式的数据

"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只在行的开头,之前和之后:和结束。不是任何”出现在行中间。

任何帮助

问候。

awk sed
3个回答
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
投票

如果你想删除除GNU sed的转义之外的所有"

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

0
投票

你也可以试试这个sed

sed -E 's/"([^"]*)"([^"]*)"(.*)",*/\1\2\3/' infile
© www.soinside.com 2019 - 2024. All rights reserved.