【发布时间】:2016-07-25 15:48:00
【问题描述】:
我有一个包含以下格式基因的文件。我想处理文件并让每一行显示一个基因(将一行中的多个基因分成多行)。
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
我做错了什么?
【问题讨论】:
-
\x3b是转义码; awk 将其视为字符semicolon。如果您想要文字字符串反斜杠,字母 x,数字 3,字母 b,则需要将反斜杠加倍,以将其转义。 -
谢谢。我使用以下命令将 \\ 加倍,但它不起作用 awk 'BEGIN {FS=",|\\x3b";} {for (i=1;i
-
我也试过 gawk 但它也不起作用。
-
\x3b 是怎么来的,为什么不显示为分号?如何将 \x3b 更改为分号?
-
您的示例数据似乎不包含文字分号。如果您发布的内容不正确,则不确定要开始猜测问题的哪一部分。