在字符串的分割中,由于信息传递的多样性,导致分析的文本出现多样性,比如将常用的制表符“\t”设置为4个连续的空格,此时如果继续沿用默认的匹配,将会出现多个空白的域。
解决此问题,最好的办法莫过于使用正则表达式,但AWK中并没有标准的空格转义字符,退格符\b(属于控制字符,编码为0000 1000)不等于空格。
1. 使用字符表述
这是最直接的方法,直接用空格键输入即可,共有两种方式,如下:
# 请注意中括号中的空白
FS = "[ ]{4,}"
# 请注意量词前面的空白
FS = " {4,}"
2. 使用八进制表述
基于ASCII编码,可以将空格进行编码转义,如下:
FS = "\040{4,}"
在这种表述方法中,数字一定要有三位,最前面的“0”绝不可以省略。
3. 使用十六进制转义
与八进制类似,只不过计算不一样,且前面的字符为“\x”,如下:
FS = "\x20{4,}"
其他
在正则表达式的使用过程中,我发现FS的赋值一定要使用字符串,而不可直接使用正则表达式匹配,如下:
# 程序将提示语法错误,无法运行
FS = /\x20{4,}/