linux – 如果分隔符也存在于文件中任何位置的字段数据中,如何替换分隔符?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 如果分隔符也存在于文件中任何位置的字段数据中,如何替换分隔符?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1279字,纯文字阅读大概需要2分钟。
内容图文
![linux – 如果分隔符也存在于文件中任何位置的字段数据中,如何替换分隔符?](/upload/InfoBanner/zyjiaocheng/956/d15f98616a734980be20d24c69ef4c82.jpg)
我在linux中有输入文件的内容,比如
"test1",2,2,,0,"Sun,day",Jan
"be,st3",1,0,,0,"Sunday",Feb1
"nest",0,0,,0,"Sunday",Jul
"rest,5",,,,0,"Sunday",Aug
需要输出像
test1|2|2||0|Sun,day|Jan
be,st3|1|0||0|Sunday|Feb1
nest|0|0||0|Sunday|Jul
rest,5||||0|Sunday|Aug
用tr命令用|替换它也取代了fieldvalue.我无法理解如何仅更改分隔符而不更改值.谁可以请提供一些指示我可以用来执行此任务的命令和命令?
解决方法:
用sed实现这是一项艰巨的任务.
另一方面,在python(版本3.x)中,完成了几行:
import csv
with open("input.csv") as fr:
with open("output.csv","w",newline='') as fw: # uncomment for python 3.x
with open("output.csv","wb") as fw: # python 2.x only
cr = csv.reader(fr,delimiter=",")
cw = csv.writer(fw,delimiter="|")
cw.writerows(cr)
它是如何工作的:它只使用了惊人的内置csv模块.用分隔符读取,用另一个写入.
好吧,现在只是为了好玩…如果你真的想知道我的sed解决方案
创建一个像这样的sedfile:
s/"\([^",]\+\)"/\1/g
s/"\([^"]\+\),\([^"]\+\)"/\1%\2/g
s/,/\|/g
s/%/,/g
将它应用于sed -f sedfile.txt input.csv> output.csv
这个怎么运作:
>从简单字段中删除引号
>从包含逗号的字段中删除引号,但用百分号替换逗号
>更改分隔符
>通过昏迷改变百分号
结果:
test1|2|2||0|Sun,day|Jan
be,st3|1|0||0|Sunday|Feb1
nest|0|0||0|Sunday|Jul
rest,5||||0|Sunday|Aug
每个受保护的字段限制为1个昏迷(可以扩展到3个或更多……)并且字段不得使用%符号.
内容总结
以上是互联网集市为您收集整理的linux – 如果分隔符也存在于文件中任何位置的字段数据中,如何替换分隔符?全部内容,希望文章能够帮你解决linux – 如果分隔符也存在于文件中任何位置的字段数据中,如何替换分隔符?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。