【发布时间】:2021-10-12 18:23:03
【问题描述】:
我有以下以制表符分隔的行。
NIATv7_g10470.t1 XP_019227081.1 100.0 878 0 0 1 878 1 878 0.0e+00 1599.7 99.9 MELKVSSPKPVFSTSDCNSDPEEKEISEDXXXXXXXXXXXXXTRSQSTETEALEPALRRPFRKRNKPFENGHPYQEGDSHSSDTRFGKRRGMGSFSRTPSDSYQMMRLNQSLSGHAAPGRGRGRESGAWGPCESRFSTIDIASQFVPQGPINPLLYTGRGPQNVSSGQGASWNAFGIVPGIPNGGLDTLHTLGLQGRLRTSLNPAMSMGIPRQRCRDFEERGFCLRGDMCPLEHGVNRIVVEDVQSLSKFNLPVSLPGAHTLGPATAQGPLPAISPSSSLANKALHNKSINPPVIDNGLGLTDTFGGGSVSGGADFYDPDQPLWSNDHPENSAALLDVNRSKIDDTGPMLDADSSDQDQVALCDGFKLERLVRDAGAASGSQSVWERTSRSKHKLQSFNSTQGINRHGKQTNVDTIDPQMVESSSEPQSSSGRNMRKPSQKALRTLFVSGVPQKDNKPEALLSHFQKFGEVIDIYIPMNGERAFVQFSKREEAEAALKAPDAVMGNRFIKLFWANRDSIMDNGTSGSSIFPLAPRGGTPSTVPPHLLFPHKRKDNLQTVAGKTAEQACGSVTVAPLATSDLPKPVAQNGLKTTPPLKKKLETLELLKEEMRXXXXXXXXXXXXXXXXXXXXXKQAVGVKDEAAPDQAMNKPKGGGTVSNSGXXXXXXXXXXXXXXXXXXXXXXXXXSRSTENAEPTCSKLSLTVAMHEASNLKQSIRPLAPVGAPFILNRYKLDNRPTTFKILPPLPSALANVDVLKEHFSTFGDPPSVELEDLEPKDCNDGSEVQNTSARISFRSRRSAERAFLNGKSWQGQILQLMWVQSSNPAKDVGVGENVTPASKQPSDANGQSNARNGVAGLPEGSVAGNHEPDNQGRREDE MELKVSSPKPVFSTSDCNSDPEEKEISEDXXXXXXXXXXXXXTRSQSTETEALEPALRRPFRKRNKPFENGHPYQEGDSHSSDTRFGKRRGMGSFSRTPSDSYQMMRLNQSLSGHAAPGRGRGRESGAWGPCESRFSTIDIASQFVPQGPINPLLYTGRGPQNVSSGQGASWNAFGIVPGIPNGGLDTLHTLGLQGRLRTSLNPAMSMGIPRQRCRDFEERGFCLRGDMCPLEHGVNRIVVEDVQSLSKFNLPVSLPGAHTLGPATAQGPLPAISPSSSLANKALHNKSINPPVIDNGLGLTDTFGGGSVSGGADFYDPDQPLWSNDHPENSAALLDVNRSKIDDTGPMLDADSSDQDQVALCDGFKLERLVRDAGAASGSQSVWERTSRSKHKLQSFNSTQGINRHGKQTNVDTIDPQMVESSSEPQSSSGRNMRKPSQKALRTLFVSGVPQKDNKPEALLSHFQKFGEVIDIYIPMNGERAFVQFSKREEAEAALKAPDAVMGNRFIKLFWANRDSIMDNGTSGSSIFPLAPRGGTPSTVPPHLLFPHKRKDNLQTVAGKTAEQACGSVTVAPLATSDLPKPVAQNGLKTTPPLKKKLETLELLKEEMRXXXXXXXXXXXXXXXXXXXXXKQAVGVKDEAAPDQAMNKPKGGGTVSNSGXXXXXXXXXXXXXXXXXXXXXXXXXSRSTENAEPTCSKLSLTVAMHEASNLKQSIRPLAPVGAPFILNRYKLDNRPTTFKILPPLPSALANVDVLKEHFSTFGDPPSVELEDLEPKDCNDGSEVQNTSARISFRSRRSAERAFLNGKSWQGQILQLMWVQSSNPAKDVGVGENVTPASKQPSDANGQSNARNGVAGLPEGSVAGNHEPDNQGRREDE MELKVSSPKPVFSTSDCNSDPEEKEISEDXXXXXXXXXXXXXTRSQSTETEALEPALRRPFRKRNKPFENGHPYQEGDSHSSDTRFGKRRGMGSFSRTPSDSYQMMRLNQSLSGHAAPGRGRGRESGAWGPCESRFSTIDIASQFVPQGPINPLLYTGRGPQNVSSGQGASWNAFGIVPGIPNGGLDTLHTLGLQGRLRTSLNPAMSMGIPRQRCRDFEERGFCLRGDMCPLEHGVNRIVVEDVQSLSKFNLPVSLPGAHTLGPATAQGPLPAISPSSSLANKALHNKSINPPVIDNGLGLTDTFGGGSVSGGADFYDPDQPLWSNDHPENSAALLDVNRSKIDDTGPMLDADSSDQDQVALCDGFKLERLVRDAGAASGSQSVWERTSRSKHKLQSFNSTQGINRHGKQTNVDTIDPQMVESSSEPQSSSGRNMRKPSQKALRTLFVSGVPQKDNKPEALLSHFQKFGEVIDIYIPMNGERAFVQFSKREEAEAALKAPDAVMGNRFIKLFWANRDSIMDNGTSGSSIFPLAPRGGTPSTVPPHLLFPHKRKDNLQTVAGKTAEQACGSVTVAPLATSDLPKPVAQNGLKTTPPLKKKLETLELLKEEMRXXXXXXXXXXXXXXXXXXXXXKQAVGVKDEAAPDQAMNKPKGGGTVSNSGXXXXXXXXXXXXXXXXXXXXXXXXXSRSTENAEPTCSKLSLTVAMHEASNLKQSIRPLAPVGAPFILNRYKLDNRPTTFKILPPLPSALANVDVLKEHFSTFGDPPSVELEDLEPKDCNDGSEVQNTSARISFRSRRSAERAFLNGKSWQGQILQLMWVQSSNPAKDVGVGENVTPASKQPSDANGQSNARNGVAGLPEGSVAGNHEPDNQGRREDE* MELKVSSPKPVFSTSDCNSDPEEKEISEDDDDDRNHKHRRKDTRSQSTETEALEPALRRPFRKRNKPFENGHPYQEGDSHSSDTRFGKRRGMGSFSRTPSDSYQMMRLNQSLSGHAAPGRGRGRESGAWGPCESRFSTIDIASQFVPQGPINPLLYTGRGPQNVSSGQGASWNAFGIVPGIPNGGLDTLHTLGLQGRLRTSLNPAMSMGIPRQRCRDFEERGFCLRGDMCPLEHGVNRIVVEDVQSLSKFNLPVSLPGAHTLGPATAQGPLPAISPSSSLANKALHNKSINPPVIDNGLGLTDTFGGGSVSGGADFYDPDQPLWSNDHPENSAALLDVNRSKIDDTGPMLDADSSDQDQVALCDGFKLERLVRDAGAASGSQSVWERTSRSKHKLQSFNSTQGINRHGKQTNVDTIDPQMVESSSEPQSSSGRNMRKPSQKALRTLFVSGVPQKDNKPEALLSHFQKFGEVIDIYIPMNGERAFVQFSKREEAEAALKAPDAVMGNRFIKLFWANRDSIMDNGTSGSSIFPLAPRGGTPSTVPPHLLFPHKRKDNLQTVAGKTAEQACGSVTVAPLATSDLPKPVAQNGLKTTPPLKKKLETLELLKEEMRKKQEMLEQKRNEFRRKLDKLEKQAVGVKDEAAPDQAMNKPKGGGTVSNSGKVENSSPVEPSNTVSSPPSEATPDSSRSTENAEPTCSKLSLTVAMHEASNLKQSIRPLAPVGAPFILNRYKLDNRPTTFKILPPLPSALANVDVLKEHFSTFGDPPSVELEDLEPKDCNDGSEVQNTSARISFRSRRSAERAFLNGKSWQGQILQLMWVQSSNPAKDVGVGENVTPASKQPSDANGQSNARNGVAGLPEGSVAGNHEPDNQGRREDE XP_019227081.1 PREDICTED: zinc finger CCCH domain-containing protein 41-like [Nicotiana attenuata]
我使用这个 awk 命令来简化上面的行:
> awk 'BEGIN { FS = "\t" } ;{print $1","$18}' NIATT_r2.0.aa.combined_nr_XPonly.best_hit_addNoXP | head
NIATv7_g10470.t1,XP_019227081.1 PREDICTED: zinc finger CCCH domain-containing protein 41-like [Nicotiana attenuata]
我想将$18 拆分为第一个空格。
XP_019227081.1 PREDICTED: zinc finger CCCH domain-containing protein 41-like [Nicotiana attenuata]
我想交换这个拆分的输出并用制表符分隔。
PREDICTED: zinc finger CCCH domain-containing protein 41-like [Nicotiana attenuata] XP_019227081.1
作为最终结果,我想将$1 与反向拆分结果组合以实现以下输出:
NIATv7_g10470.t1,PREDICTED: zinc finger CCCH domain-containing protein 41-like [Nicotiana attenuata] XP_019227081.1
这怎么可能?
【问题讨论】:
-
看起来您的原始文件由空格和制表符的组合分隔。只需将
FS设置为默认值(不要设置它),它将在 whitespace 上中断,包括空格或制表符。例如,使用默认的$1是NIATv7_g10470.t1和$18是XP_019227081.1($19是PREDICTED:) -
抱歉,我更新了问题中的输入文件。
-
你能不能用简单的英语说你想要什么,这样我就不必一直滚动到日本并记住 20 个奇怪的(对我而言)字段。谢谢。
-
您要的是这样的东西吗?
awk '{print $1","$19,$20,$21,$22,$23,$24,$25,$26,$NF"\t\t"$18}' -
对不起,让您感到困惑。我更新了我的问题。
标签: awk