我有一个这样的文件:
reference 25038 A G 39134 1 TPPH54 TPPH49 TPPH50 TPPHL51 TPPH52 TPPH53 TPPH55 p.Thr10198Thr
reference 77940 T C 5131 1 TPPH54 TPPH49 p.Asn898Asp
reference 77940 T C 5131 1 TPPH29 TPPH30 TPPH32 p.Gly48Gly
Run Code Online (Sandbox Code Playgroud)
我想得到:
reference 25038 A G 39134 1 TPPH54 p.Thr10198Thr
reference 77940 T C 5131 1 TPPH54 p.Asn898Asp
reference 77940 T C 5131 1 TPPH29 p.Gly48Gly
Run Code Online (Sandbox Code Playgroud)
如何在 awk/sed/grep 模式中删除第一个模式(始终为 7 美元)之后所有具有相同开头的模式?
我在想这样的事情:
只打印前 7 列和最后一列
粘贴 <(awk '{print $1, $2, $3, $4, $5, $6, $7}' 文件) <(awk '{print ????}' file-tmp) > file-final
但我不知道如何获得最后一个,因为每个原始的数字可能不同
预先非常感谢您的帮助!
你可以这样做:
awk '{print $1, $2, $3, $4, $5, $6, $7, $NF}' file | column -t
reference 25038 A G 39134 1 TPPH54 p.Thr10198Thr
reference 77940 T C 5131 1 TPPH54 p.Asn898Asp
reference 77940 T C 5131 1 TPPH29 p.Gly48Gly
Run Code Online (Sandbox Code Playgroud)
这里column -t仅用于表格显示。
使用sed
$ sed -E ':a;s/(([^ \t]*[ \t]+){6}TPPH[0-9]+)[ \t]+TPPH[^ \t]*[ \t]+/\1\t/;ta' input_file
reference 25038 A G 39134 1 TPPH54 p.Thr10198Thr
reference 77940 T C 5131 1 TPPH54 p.Asn898Asp
reference 77940 T C 5131 1 TPPH29 p.Gly48Gly
Run Code Online (Sandbox Code Playgroud)