gpt4 book ai didi

regex - Unix : Find and replace consecutive commas to consecutive pipelines

转载 作者:行者123 更新时间:2023-12-03 09:53:28 24 4
gpt4 key购买 nike

我正在将双引号 CSV 转换为 Unix 中的管道分隔 txt 文件。我使用以下 sed 命令将“,”替换为 |然后删除开始和结束双引号。

sed -e 's/","/|/g' -e 's/"//g' filenm.csv > filenm.txt

但文件似乎有连续的逗号,没有双引号,而且它们没有被替换。

Col1|col2|col3|col4|col5|col6|col7|col8
Val1|val2|val3,,,,val7|val8

现在我想将所有这些连续的逗号转换为连续的管道,因为它们表示空字段或空字段。

其他字段在字段值内也有逗号,不应更改。

我尝试使用下面的方法,但没有用。

sed -e 's/,{1,\}/|{1,\}/g' filenm.csv > filenm.txt

在记事本中打开的示例 csv 文件:

"ID","Name","DOB","Age","Address","City","State","Country","Phone number"
"123","ABC","12/20/2020","15","No.38,3rd st, RRR NNN, TRT",,,,"9999999999"
"456","DEF","12/20/2020",,,,,"test-country","9999999999"
"465","XYZ",,,"No.38,3rd st, RRR NNN, TRT",,,,"9999999999"

我希望这有助于重现和解决问题。

提前致谢....

最佳答案

这可能对你有用(GNU sed):

sed -E ':a;s/^(("[^",]*",+)*"[^",]*),/\1\n/;ta;y/,\n/|,/' file

用换行符迭代替换 , 之间的 ",然后将 , 翻译为 |的和 , 的换行符。

关于regex - Unix : Find and replace consecutive commas to consecutive pipelines,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65629969/

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