gpt4 book ai didi

shell - Unix sed 命令 - 全局替换不起作用

转载 作者:行者123 更新时间:2023-12-05 09:01:13 25 4
gpt4 key购买 nike

我有这样的场景,我们想要将数据之间的多个双引号替换为单引号,但是由于输入数据是用 "comma" 分隔符分隔的,并且所有列数据都用双引号括起来 "" 遇到了一个问题,同样的解释如下:

示例数据如下所示:

"int","","123","abd"""sf123","top"

因此,输出将是:

"int","","123","abd"sf123","top"

尝试了以下方法来获得解决方案,但只有第一次出现时有效,不确定是什么问题??

sed -ie 's/,"",/,"NULL",/g;s/""/"/g;s/,"NULL",/,"",/g' inputfile.txt
  1. 将所有 ---> 从 "", 替换为 "NULL",
  2. 将所有多次出现的 ---> 从 """或 ""或 """"替换为 "(单次出现)
  3. 将 1 个步骤更改回原来的 ---> 从“NULL”到“”,

但是,只有第一次发生的事情发生了变化,剩下的看起来和下面一样:

如果输入是:

"int","","","123","abd"""sf123","top"

输出如下:

"int","","NULL","123","abd"sf123","top"

但是,输出应该是:

"int","","","123","abd"sf123","top"

最佳答案

您可以先行尝试此 perl:

perl -pe 's/("")+(?=")//g' file

"int","","123","abd"sf123","top"
"int","","","123","abd"sf123","top"
"123"abcs"

输入是:

cat file

"int","","123","abd"""sf123","top"
"int","","","123","abd"""sf123","top"
"123"""""abcs"

分手:

  • ("")+:匹配1+ 双引号
  • (?="):如果这些对后跟一个 "

关于shell - Unix sed 命令 - 全局替换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73778101/

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