2016-07-25 119 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

這工作。謝謝 –

相關問題