【发布时间】:2021-09-17 03:08:39
【问题描述】:
我有一个包含如下字段的文件:
2|508|PNP|20-dec-2015 12:32:20|3451101|0|3xPirate Ship Cruise | CPT||0598
2|504|PNP|20-dec-2015 12:32:20|3451101|0|3xPirate Ship Cruise | CPT||0598
2|505|PNP|20-dec-2015 12:32:20|3451101|0|3xPirate Ship Cruise || CPT||0598
2|506|PNP|20-dec-2015 12:32:20|3451101|0|3xPirate Ship Cruise | |CPT||0598
我想得到最终文件:
2|508|PNP|20-dec-2015 12:32:20|3451101|0|3xPirate Ship Cruise CPT||0598
2|504|PNP|20-dec-2015 12:32:20|3451101|0|3xPirate Ship Cruise CPT||0598
2|505|PNP|20-dec-2015 12:32:20|3451101|0|3xPirate Ship Cruise CPT||0598
2|506|PNP|20-dec-2015 12:32:20|3451101|0|3xPirate Ship Cruise CPT||0598
我尝试了以下方法:
sed 's/|//7'
这很棒,因为它删除了不需要的 |分隔符,但是,在第 7 字段中,数据有时在第 7 字段中有多个管道,我的代码在第一次运行时没有发现。
有没有办法使用 sed、awk 或 python 删除一个或多个 |在第 7 场使总 |管道总共只有 8 个 |?
【问题讨论】:
-
您真的应该尝试修复生成输入文件的任何内容,以便它引用任何可以包含
|的字段,因此将是有效的 CSV 格式,例如2|508|PNP|20-dec-2015 12:32:20|3451101|0|"3xPirate Ship Cruise | CPT"||0598,以后就不用玩这种游戏了。 -
你真的想要
Cruise和CPT之间的两个空格吗?或者这只是一个错字? -
Roco,请检查my answer 并告诉我它是否有效。
-
嗨@dawg这是我的错字
-
嗨@WiktorStribiżew,谢谢你的回复,我会测试你的解决方案并检查结果