2016-07-25 4 views
0

У меня есть файл, содержащий гены в следующем формате. Я хочу обработать файл и сделать в каждой строке один ген (разделить несколько генов в одной строке на несколько строк).set " 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";} {для (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 

Это работает. Я точно не знаю, почему, хотя много раз двойная обратная косая черта снова будет работать ...

+0

Это работает. благодаря –

Смежные вопросы