Parece que você deseja excluir _
e todos os caracteres não em branco depois disso, então:
sed 's/_[^[:blank:]]*//' < file
Eu quero manter os personagens antes e depois de um caractere específico (_ neste caso). Eu tentei cortar e sed, mas então eu removi a parte antes do personagem ou depois do personagem.
Minha saída é assim
7_38 98.97
7_37 98.59
7_36 98.79
7_35 98.93
7_34 98.57
7_33 99.70
7_32 99.13
E eu quero excluir o número depois de '_' e manter a segunda coluna em uma saída como essa
7 98.97
7 98.59
7 98.79
7 98.93
7 98.57
7 99.70
7 99.13
Você tentou usar o awk? Isso deve levá-lo aonde você quer ir:
awk '/_/ {gsub("_.*","",$1); print}' < input.txt
Com a função awk sub :
awk '{ sub("_.*","",$1) }1' OFS='\t' file
A saída:
7 98.97
7 98.59
7 98.79
7 98.93
7 98.57
7 99.70
7 99.13
Você pode usar vários caracteres como separadores de campo (espaço e sublinhado) e somente imprimir os campos 1 e 3:
awk -F'_| +' '{print($1,$3)}' file
Tags text-processing