【问题标题】:set "\x3b" as a delimiter将“\x3b”设置为分隔符
【发布时间】: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 更改为分号?
  • 您的示例数据似乎不包含文字分号。如果您发布的内容不正确,则不确定要开始猜测问题的哪一部分。

标签: awk delimiter


【解决方案1】:
awk 'BEGIN {FS=",|\\\\x3b"} {for (i=1;i<=NF;i++) {print $i}}' file.txt

这行得通。 我不知道为什么,只是多次加倍反斜杠就可以了......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    相关资源
    最近更新 更多