gpt4 book ai didi

regex - 替换csv中的双引号

转载 作者:行者123 更新时间:2023-12-04 14:34:01 25 4
gpt4 key购买 nike

我几乎遇到了以下问题,但没有找到解决方案。这可能是我的 CSV 文件结构:

1223;"B630521 ("L" fixed bracket)";"2" width";"length: 5"";2;alternate A
1224;"B630522 ("L" fixed bracket)";"3" width";"length: 6"";2;alternate B

如您所见,有一些 "为英寸而写 "L"内附 " .

现在我正在寻找一个 UNIX shell 脚本来替换 " (英寸)和 "L"双引号和 2 个单引号,如下例所示:
sed "s/$OLD/$NEW/g" $QFILE > $TFILE && mv $TFILE $QFILE

谁能帮我?

最佳答案

更新(使用 perl 很容易,因为您可以获得完整的前瞻功能)

perl -pe 's/(?<!^)(?<!;)"(?!(;|$))/'"'"'/g' file

输出
1223;"B630521 ('L' fixed bracket)";"2' width";"length: 5'";2;alternate A
1224;"B630522 ('L' fixed bracket)";"3' width";"length: 6'";2;alternate B

仅使用 sed、grep

仅通过使用 grep、sed(而不是 perl、php、python 等),一个不太优雅的解决方案可能是:
grep -o '[^;]*' file | sed  's/"/`/; s/"$/`/; s/"/'"'"'/g; s/`/"/g' 

输出 - 对于您的输入文件,它提供:
1223
"B630521 ('L' fixed bracket)"
"2' width"
"length: 5'"
2
alternate A
1224
"B630522 ('L' fixed bracket)"
"3' width"
"length: 6'"
2
alternate B
  • grep -o基本上是通过 ; 分割输入
  • sed 首先用 `
  • 替换行首的 "
  • 然后它将行尾的 "替换为另一个 `
  • 然后它替换所有 剩余 双引号"按单挺'
  • 最后它放回了所有 "在开始和结束
  • 关于regex - 替换csv中的双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5979825/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com