
Ich habe folgende Datei:
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 -
Die erste und zweite Spalte sind durch Tabulatoren getrennt. Ich brauche Folgendes:
ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -
Ich habe versucht, awk mit dem Feldtrennzeichen „+“ zu verwenden, aber dadurch wurde auch das „+“ aus der zweiten Spalte gelöscht …
Antwort1
Sie können den Feldtrenner von awk auf Leerzeichen oder setzen +
und dann die klassische, auf assoziativen Arrays basierende Deduplizierung durchführen:
$ awk -F'[ \t+]' '!seen[$1]++' file
ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -
Antwort2
Vielleicht habe ich das Problem falsch verstanden, aber das scheint zu funktionieren:
grep -v '+.' file
Ausgabe:
ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -
Antwort3
Dasselbe habe ich mit sed
dem Befehl erreicht.
sed -n '/^.\{1,5\} .$/p' filename
Ausgabe
ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -
Antwort4
Verwenden vonMüller:
mlr --tsv --implicit-csv-header --headerless-csv-output \
put -S '$1=gsub($1,"[+].+$","")' then uniq -a inputfile
und die Ausgabe ist:
ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -