我需要将 ID 列表从使用由,
和/或\r\n
组成的分隔符转换\n
为使用,|
. (本质上:s/[,\r\n]+/,\|/g
没有尾随|
)
示例输入数据:
123,456,789,012
或者
123,
456
789,
012
我需要得到的输出是123,|456,|798,|012,
:一个逗号结束每个字段,以及一个分隔它们的管道。
这看起来很简单,但我对如何管理这个问题感到很困惑。我已经尝试过......实际上有很多方法,但似乎没有任何效果。这里有一些例子:
sed "s/[,\r\n]+/,\|/g" < filename
不匹配任何分隔符。sed "s/(,|,?\r?\n?)/,\|/g"
也不匹配任何东西。tr -t "(,?(\r|\n)+)" ",\|"
并且tr -t "[,\r\n]+" ",\|"
只替换,
tr "(,|\r?\n)" ",\|"
可以正常工作,但,
可以用多个条替换匹配的字符。前任:,\n
,\r\n
123|||456|||789|||012|
变得更复杂:(
sed ':a;N;$!ba;s/\n/,/g"
取自此处)\n
正确替换为,
但不适用于\r\n
.\n
用替换[,\r\n]
只是返回输入。
我难住了。任何人都可以提供一些帮助或建议吗?