我有一个文件:
chr12 121164863 + NM_000017
chr17 7126029-7126037 + NM_000018
chr11 108004589-108004593 + NM_000019
chr12 52306964-52306968 + NM_000020
我想要做的是删除第2列中-
之后的字符,以获得所需的输出:
chr12 121164863 + NM_000017
chr17 7126029 + NM_000018
chr11 108004589 + NM_000019
chr12 52306964 + NM_000020
有关如何完成此任务的任何建议?我在想awk或sed,但是他们已经快速复杂了。
答案 0 :(得分:2)
使用awk你可以做到
$ awk '{$2+=0}1' file
chr12 121164863 + NM_000017
chr17 7126029 + NM_000018
chr11 108004589 + NM_000019
chr12 52306964 + NM_000020
或者如果您希望它适用于非数字数据:
awk '{split($2,a,/-/);$2=a[1]}1' file
答案 1 :(得分:1)
这比你想象的要容易:
sed -E 's/-\d+//'
假设您可以进行PCRE,否则:sed -E 's/-[0-9]+//'
或者只使用perl:
perl -pe 's/-\d+//g'
如果您确实需要专门匹配第二个字段,-
出现在其他地方:
perl -pe 's/^(\w+\s+\d+)-\d+/$1/'