在多字符定界符中时无法识别管道

Pipe is not recognised when in a multi-character delimiter

我有一个用 |;| 分隔的文件。 例子;

1|;|2|;|3|;|4|;|5
1|;|2|;|3|;|4|;|5

我需要将分隔符更改为 : 或其他内容,

但是 awk 中的 FS 对管道没有任何作用 |

awk '=' FS="|;|" OFS=":" file

1|:|2|:|3|:|4|:|5
1|:|2|:|3|:|4|:|5 

管道|在用作单个字符分隔符时被识别;

awk '=' FS="|" OFS="" file

1:2:3:4:5
1:2:3:4:5 

但是,sed 解决了问题,

sed 's/|;|/:/g' file

但我想知道是否有办法使用 awk 命令。

FS包含一个正则表达式,|表示正则表达式中的alternative。反斜杠管道以按字面匹配它们:

awk '=' FS='\|;\|' OFS=:

单管工作的原因是one-character FS被特殊对待:

If FS is a single character, fields are separated by that character. If FS is the null string, then each individual character becomes a separate field. Otherwise, FS is expected to be a full regular expression. In the special case that FS is a single space, fields are separated by runs of spaces and/or tabs and/or newlines.