在用awk进行分割记录文件的时候,我们发现单独用"|"基本上是Ok,但用“||”则是无法进行正常的分割,下面是测试的例子:
在测试之前给到一个测试的文件:test.txt,里面的内容如下:
one|two|three|four|five|six
one2|two2|three2|four2|five2|six2
awk输出的文件存到test_awk_output.txt
一,使用"|"进行分割
/usr/bin/awk -F '|' '{print $2}' ./test.txt > ./test_awk_output.txt
输出内容 test_awk_output.txt:
two
two2
结论是:可以正常分割
二,使用"/|"进行分割
/usr/bin/awk -F '/|' '{print $2}' ./test.txt > ./test_awk_output.txt
输出内容 test_awk_output.txt:
two
two2
结论是:可以正常分割,但awk给出如下的warning:
awk: warning: escape sequence `/|' treated as plain `|'
把test.txt的分割符改成"||",内容如下:
one||two||three||four||five||six
one2||two2||three2||four2||five2||six2
三,使用"||"进行分割
/usr/bin/awk -F '||' '{print $2}' ./test.txt > ./test_awk_output.txt
输出内容 test_awk_output.txt则为空。
结论是:无法直接用"||"进行分割
四,使用"/|/|"进行分割
/usr/bin/awk -F '/|/|' '{print $2}' ./test.txt > ./test_awk_output.txt
输出内容 test_awk_output.txt则为空。
结论是:无法直接用"/|/|"进行分割,并且awk给出如下的警告:
awk: warning: escape sequence `/|' treated as plain `|'
五,使用“//|//|”进行分割
/usr/bin/awk -F '//|//|' '{print $2}' ./test.txt > ./test_awk_output.txt
输出内容 test_awk_output.txt:
two
two2
结论是:可以正常分割
综上的实验结论:awk对"||"进行分割必须进行二次转义,即-F“//|//|”进行分割。