awk用“||”作为分割符的问题

   在用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“//|//|”进行分割。

 

 

 

 

 

 

 

 

你可能感兴趣的:(awk用“||”作为分割符的问题)