2016-07-25 61 views
0

我有一个包含以下格式的基因的文件。我想处理文件,并使每行显示一个基因(将多个基因在一行中分成多行)。将“ x3b”设置为分隔符

C10orf32 
C10orf32,C10orf32-ASMT 
C19orf33\x3bYIF1B 
C19orf73,LIN7B 
C19orf73,PPFIA3\x3bLIN7B 

我用下面的命令,并希望设置 “” 和 “\ X3B” 作为分隔符,而 “\ X3B” 仍然在outfile中,如下

awk 'BEGIN {FS=",|\x3b";} {for (i=1;i<=NF;i++) {print $i}}' file.txt 

输出显示:

C10orf32 
C10orf32 
C10orf32-ASMT 
C19orf33\x3bYIF1B 
C19orf73 
LIN7B 
C19orf73 
PPFIA3\x3bLIN7B 

,但我想

C10orf32 
C10orf32 
C10orf32-ASMT 
C19orf33 
YIF1B 
C19orf73 
LIN7B 
C19orf73 
PPFIA3 
LIN7B 

我在做什么错?

+0

'\ x3b'是一个转义代码; Awk将其视为字符[分号](http://www.fileformat.info/info/unicode/char/3b/index.htm)。如果你想要字符串反斜杠,字母x,数字3,字母b,你需要加倍反斜杠,以逃避它。 – tripleee

+0

谢谢。我使用以下命令将\\加倍,但它不起作用awk'BEGIN {FS =“,| \\ x3b”;} {for(i = 1; i <= NF; i ++){print $ i}} 'file.txt –

+0

我也尝试了gawk,但它也不起作用。 –

回答

0
awk 'BEGIN {FS=",|\\\\x3b"} {for (i=1;i<=NF;i++) {print $i}}' file.txt 

This works。 我不知道究竟为什么,但只是许多时间再次加倍反斜杠将工作...

+0

这工作。谢谢 –

相关问题