Немного неясно, каким должен быть желаемый вывод, но это моя интерпретация: sed
:
$ sed 's/:.*//' input
1 313 . T C 30.11 1
1 316 . A T 30.80 1
1 317 . T A 31.40 1
Использование awk:
$ awk -F":" '{print $1}' input
1 313 . T C 30.11 1
1 316 . A T 30.80 1
1 317 . T A 31.40 1
Использование Cut:
cut -d":" -f1 input
Использование bash:
IFS=':'
while read a b; do
echo $a
done < input
Альтернативная интерпретация с использованием awk:
$ awk 'BEGIN {OFS="\t"} {sub(/:.*/,"",$7); print}' input
1 313 . T C 30.11 1 . . .
1 316 . A T 30.80 1 . 0:8:28 .
1 317 . T A 31.40 1 . 0:8:28 .
3-е и, возможно, последнее обновление
3-еинтерпретация с использованием awk:
$ awk 'BEGIN {OFS="\t"} {for (i=1;i<NF;i++){sub(/:.*/,"",$i)}; print}' input
1 313 . T C 30.11 1 . . .
1 316 . A T 30.80 1 . 0 .
1 317 . T A 31.40 1 . 0 .