我有一个看起来像这样的文件:
chr22 43089055 43089055 - NM_017436 C 300 903delC
chr22 43089715-43089717 43089715-43089717 - NM_017436 CTT 79
Run Code Online (Sandbox Code Playgroud)
我想删除第-3 列之前的所有字符,以提供如下所示的输出:
chr22 43089055 43089055 - NM_017436 C 300 903delC
chr22 43089715-43089717 43089717 - NM_017436 CTT 79
Run Code Online (Sandbox Code Playgroud)
我awk '{$2+=0}1' file过去曾使用过删除 之后的字符-,但我不相信我可以对当前的问题使用相同的技术。有什么建议?
Perl 来拯救:
perl -lane 'BEGIN { $, = "\t" } $F[2] =~ s/.*-//; print @F' < file
Run Code Online (Sandbox Code Playgroud)
-l 将换行符附加到 print-n 逐行读取输入-a在空白处拆分每一行并填充@F数组$, 打印时分隔列表成员,将其设置为制表符s/.*-// 将所有内容替换为破折号,它绑定到第三列(数组从 0 开始索引)