我有一个看起来像这样的文件(以及数百万条其他行):
1 rs10900604:798400:A:G 0 798400 G A
1 rs11240777 0 798959 A G
1 1:4970452:885689:G:A 0 885689 G A
我想改变它,看起来像这样:
1 rs10900604 0 798400 G A
1 rs11240777 0 798959 A G
1 1:4970452:885689:G:A 0 885689 G A
所以,我想删除第二列冒号后的所有内容,但前提是列中的条目以“rs ...”开头
我已尝试用sed执行此操作,并可以使用
删除冒号后的所有内容sed 's/\:[0-9]*\:[A-Z]*\:[A-Z]*//g'
...但我无法弄清楚如何赋予“rs ...”条目特异性。
答案 0 :(得分:2)
可awk
可以轻松完成
$ awk '$2 ~ /^rs/{ gsub(":.*", "", $2) }1' input
1 rs10900604 0 798400 G A
1 wrs11240777 0 798959 A G
1 1:4970452:885689:G:A 0 885689 G A
答案 1 :(得分:1)
这对我有用,但我很少使用sed,所以可能有更好的解决方案:
sed '/rs.*/ s/\:[0-9]*\:[A-Z]*\:[A-Z]*//' textfile.txt