在多字符定界符中时无法识别管道
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.
我有一个用 |;|
分隔的文件。
例子;
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.