Sed 删除列条目的一部分(取决于条目的开头)
我有一个这样的文件(还有数百万行): 我想将其更改为如下所示:Sed 删除列条目的一部分(取决于条目的开头),sed,Sed,我有一个这样的文件(还有数百万行): 我想将其更改为如下所示: 1 rs10900604 0 798400 G A 1 rs11240777 0 798959 A G 1 1:4970452:885689:G:A 0 885689 G A 因此,我想删除第二列中冒号后面的所有内容,但前提是该列中的条目以“rs…”开头 我已经试着用sed来做这件事,并且可以用se
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删除冒号后的所有内容
sed 's/\:[0-9]*\:[A-Z]*\:[A-Z]*//g'
…但我不知道如何为“rs…”条目赋予它特殊性。可能是
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
这对我很有效,但我很少使用sed,因此可能有更好的解决方案:
sed '/rs.*/ s/\:[0-9]*\:[A-Z]*\:[A-Z]*//' textfile.txt
sed '/rs.*/ s/\:[0-9]*\:[A-Z]*\:[A-Z]*//' textfile.txt