Ich freue mich immer über Ihre Hilfe.Löschen von Zeilen, die duplizierte Zeichenfolgen enthalten
Ich möchte Zeilen mit doppelten Strings in der zweiten Spalte löschen.
test.txt
658 invert_d2e_q_reg_0_/Qalu_ecl_zlow_e 0.825692
659 invert_d2e_q_reg_0_/Qalu_byp_rd_data_e[31] 0.825692
660 invert_d2e_q_reg_0_/Qalu_byp_rd_data_e[63] 0.825692
661 invert_d2e_q_reg_0_/Qalu_ecl_zhigh_e 0.825692
665 invert_d2e_q_reg_0_/Qalu_byp_rd_data_e[62] 0.825692
666 invert_d2e_q_reg_0_/Qalu_ecl_zlow_e 0.825692
668 invert_d2e_q_reg_0_/Qalu_ecl_zhigh_e 0.825692
670 invert_d2e_q_reg_0_/Qalu_ecl_zhigh_e 0.825692
673 invert_d2e_q_reg_0_/Qalu_ecl_zlow_e 0.825692
675 invert_d2e_q_reg_0_/Qalu_ecl_zhigh_e 0.825692
677 invert_d2e_q_reg_0_/Qalu_ecl_zhigh_e 0.825692
678 invert_d2e_q_reg_0_/Qalu_byp_rd_data_e[27] 0.825692
679 invert_d2e_q_reg_0_/Qalu_byp_rd_data_e[27] 0.8120
.
.
.
output.txt
658 invert_d2e_q_reg_0_/Qalu_ecl_zlow_e 0.825692
659 invert_d2e_q_reg_0_/Qalu_byp_rd_data_e[31] 0.825692
660 invert_d2e_q_reg_0_/Qalu_byp_rd_data_e[63] 0.825692
661 invert_d2e_q_reg_0_/Qalu_ecl_zhigh_e 0.825692
665 invert_d2e_q_reg_0_/Qalu_byp_rd_data_e[62] 0.825692
678 invert_d2e_q_reg_0_/Qalu_byp_rd_data_e[27] 0.825692
.
.
.
weiß ich sed Linien mit vordefinierten spezifischen Strings löschen können, aber in meinem Fall konnte ich nicht erwartet, die Saiten dupliziert werden. Doppelte Zeichenfolgen können auch mehr als 1000 sein.
Ich habe "uniq" verwendet, um diese Aufgabe zu erledigen, aber das funktioniert nicht. uniq -u -f 4 test.txt (-u druckt einzigartige Linien. -f die ersten 4 Buchstaben überspringt.)
Gibt es eine Möglichkeit, dies zu tun mit sed/awk/perl? Oder korrigiere bitte meine uniq-Semantik.
Best,
Jaeyoung
'man sort': schau dir die' -u' Option an. Sie müssen einen Schlüssel angeben, vielleicht "-k2". Viel Glück. – shellter
'uniq' muss mit sortierter Eingabe arbeiten. Also benutze 'sort -k4 | uniq -u -f4' – Will
'awk' mit Arrays sollte dies schnell machen. –