处理一行的 bash 命令

问题描述 投票:0回答:1
我有一个奇怪的 .txt 文件,里面有这一行。

lcl|CU459141.1_prot_CAM87240.1_2248 - TniQ PF06527.14 0.018 13.6 0.0 0.024 13.2 0.0 1.1 1 0 0 1 1 1 0 [locus_tag=ABAYE2390] [db_xref=EnsemblGenomes-Gn:ABAYE2390
我需要将该行处理成如下两列:

CU459141.1 CAM87240.1
我尝试了以下方法使其以制表符分隔以剪切 -f1 以进行进一步处理,但没有用

sed 's/,/\t/g;s/\[//g;s/]//g' out.txt | cut -f1
谁能帮我写一个 bash 命令?

bash process command line
1个回答
0
投票
使用 GNU awk。使用

|

_
 作为字段分隔符:

awk -F '[|_]' '{print $2 "\t" $4}'

awk 'BEGIN{FS="[|_]"; OFS="\t"} {print $2, $4}' out.txt
输出:

CU459141.1 CAM87240.1
    
© www.soinside.com 2019 - 2024. All rights reserved.