perl-修正不在记录之间的字段中不平衡的引号

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

我有一个如下所示的管道分隔文件,其中双引号在字段中不平衡,我需要对其进行修复

name  |age|role        |experience|
John  |25 |Developer   |2.56      |
Scot"x|30 |Tester      |5.2       |
Jim   |28 |DBA         |3.0       |
Mike" |35 |"Consultant"|10.0      |
Daniel|26 |Developer   |3.2       |
Paul" |29 |Tester  "   |3.6       |
Peter |30 |Developer   |6.5       |

必填输出:

name  |age|role        |experience|
John  |25 |Developer   |2.56      |
Scot x|30 |Tester      |5.2       |
Jim   |28 |DBA         |3.0       |
Mike  |35 |"Consultant"|10.0      |
Daniel|26 |Developer   |3.2       |
Paul  |29 |Tester      |3.6       |
Peter |30 |Developer   |6.5       |

我在下面的命令中尝试过,但是没有给出预期的结果。。

perl -ne ' { while(/\x22/g) {$c++} ; if($c%2!=0) { s/\x22//g ; print} else { print } ; $c=0 } ' file
perl awk
1个回答
0
投票

[请您试一下。考虑到您只需要编辑其值的开头"和结尾"的字段。

awk 'BEGIN{FS=OFS="|"} {for(i=1;i<=NF;i++){if($i!~/^\".*\"$/){gsub(/\"/,"",$i)}}} 1' Input_file
© www.soinside.com 2019 - 2024. All rights reserved.