¿Cómo puedo eliminar líneas repetidas teniendo en cuenta el texto de solo una columna?

¿Cómo puedo eliminar líneas repetidas teniendo en cuenta el texto de solo una columna?

Tengo el siguiente archivo:

ICR1 +
ICR1+1+3199 +
ICR1+2526+2828 +
IRT1 +
IRT1+1+1489 +
IRT1+713+937 +
LSR1 -
LSR1+1+1175 -
LSR1+366+638 -
NME1 +
NME1+1+340 +
NME1+2+118 +
PWR1 -
PWR1+1+941 -
PWR1+724+939 -
Q0017 -
Q0017+1+162 -
Q0020 -
Q0020+1370+1513 -
Q0020+1+440 -

La primera y segunda columnas están separadas por tabulaciones. Necesito tener lo siguiente:

ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -

Intenté usar awk con el separador de campo "+" pero también borró el + de la segunda columna...

Respuesta1

Puede configurar el separador de campos de awk en espacios en blanco o +y luego realizar la clásica deduplicación basada en matrices asociativas:

$ awk -F'[ \t+]' '!seen[$1]++' file
ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -

Respuesta2

Quizás no entendí bien el problema, pero esto parece funcionar:

grep -v '+.' file

Producción:

ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -

Respuesta3

He logrado lo mismo usando sedel comando

sed -n '/^.\{1,5\} .$/p' filename

producción

ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -

Respuesta4

UsandoMolinero:

mlr --tsv --implicit-csv-header --headerless-csv-output \
    put -S '$1=gsub($1,"[+].+$","")' then uniq -a inputfile

y la salida es:

ICR1    +
IRT1    +
LSR1    -
NME1    +
PWR1    -
Q0017   -
Q0020   -

información relacionada