我有一个制表符分隔的文件。最后一列是以分号分隔的,具有不相等的长行。我想解析这个专栏。
输入:
AA 762 8640 BB CC DD EE=T;FF=C;GG=G;HHA
II 852 6547 JJ KK LL MM=G;NN=P;QQ=RF
期望的输出:
AA 762 8640 BB CC DD EE=T FF=C GG=G HHA
II 852 6547 JJ KK LL MM=G NN=P QQ=RF
我可以得到例如使用此代码的前三个值:
awk 'BEGIN { FS=";" } { print $1, $2, $3}' file
但是,当我运行它时,它不解析列,只是按原样打印文件:
awk 'BEGIN { FS=";" } { print $0}' file
我该如何解决这个问题?
答案 0 :(得分:3)
您可以尝试以下内容:
awk 'BEGIN{FS=OFS="\t"}{gsub(/;/,"\t",$NF)}1' file
$ cat file
AA 762 8640 BB CC DD EE=T;FF=C;GG=G;HHA
II 852 6547 JJ KK LL MM=G;NN=P;QQ=RF
$ awk 'BEGIN{FS=OFS="\t"}{gsub(/;/,"\t",$NF)}1' file
AA 762 8640 BB CC DD EE=T FF=C GG=G HHA
II 852 6547 JJ KK LL MM=G NN=P QQ=RF
答案 1 :(得分:3)
另一种awk方法
awk -F'[[:space:];]' -vOFS='\t' '{$1=$1;print}' input.txt
AA 762 8640 BB CC DD EE=T FF=C GG=G HHA
II 852 6547 JJ KK LL MM=G NN=P QQ=RF
答案 2 :(得分:2)
使用tr
用这样的标签替换分号:
tr ";" "\t" <yourfile