我需要將使用由,
和/或\r\n
或\n
組成的分隔符的ID列表轉換爲使用,|
。 (主要爲:s/[,\r\n]+/,\|/g
末尾沒有|
)使用sed或tr替換不同的分隔符
實施例的輸入數據:
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"
(來自here兩者)取代\n
正確地,
但不與\r\n
工作。用[,\r\n]
代替\n
只是返回輸入。
我很難過。任何人都可以提供一些幫助或建議嗎?
那麼輸出最後沒有管道?在輸出中,你有','標記每個字段的結尾,'''分隔字段對嗎? –
正確!我的帖子中我會更清楚的,但是我在工作時被衝出了門。 :( –
謝謝!而且是的,我一直在等待,直到今天我可以在工作中測試它 –