我正在开发一个项目,该项目采用以下形式的分隔数据集:
field1~field2~field3~.....~fieldn
有空字段是可能的,所以
field1~~~field4~~field6
完全可以接受。
这个文件是使用内部翻译程序翻译的,这有点不足之处。具体来说,它不能很好地处理空字段。我的解决方案是在其中粘贴一些虚拟值,例如空格或 @ 符号。我试过了:
sed -r 's/~/~ ~/g'
和
awk '{gsub(/\~\~/,"~ ~")}; 1' file > file.SPACE
但是这两个都不足以替换 MULTIPLE 字段。所以如果我输入
field1~field2~~~field3
它会输出:
field1~field2~ ~~field3
如果可以的话,我只想编写脚本,因为我无法更改翻译器的代码。我可以更改创建分隔文件的程序中的代码,但我不想这样做。是否有一些解决方法,或者正在为此提出一个表达式,这只是常规语言的固有限制之一?
编辑:哇,感谢大家的快速响应,您的所有解决方案都有效,所以我对所有解决方案都投了赞成票。我想我会接受 Janito 的解释。
还有为什么要投反对票?