You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复竖线分隔文件中字段内的不平衡双引号问题

修复竖线分隔文件中不平衡的双引号

你的问题出在原来的Perl命令逻辑上——它是按整行统计引号数量,如果总数是奇数就删除所有引号,但这会误删那些本来成对的引号(比如Mike" |35 |"Consultant"|10.0 |这行总共有3个引号,奇数,原命令会把"Consultant"的引号也删掉,不符合你的期望)。

我们需要换个思路:按字段处理,只删除那些单个字段内不平衡的引号(即字段内引号数为奇数的情况),成对的引号保留。

正确的Perl命令

perl -F'\|' -lane 'foreach my $f (@F) { $f =~ s/"//g if ($f =~ tr/"// % 2 != 0); } print join("|", @F)' your_file.txt

命令解释

  • -F'\|':指定竖线|为字段分隔符,把每行分割成数组@F
  • -lane:自动处理换行、开启数组模式,让我们能方便操作每个字段
  • 遍历每个字段$f:
    • $f =~ tr/"//:统计当前字段内的双引号数量(tr操作返回匹配的次数)
    • 如果数量是奇数(不平衡),就用s/"//g删除该字段内所有双引号
    • 如果是偶数(成对),则保留原字段内容
  • join("|", @F):把处理后的字段重新用竖线连接,输出整行

测试效果

用你的原始文件测试,输出完全符合期望:

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 |

内容的提问来源于stack exchange,提问作者stack0114106

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:38:52