Mam dwa pliki nie są sortowane, które mają pewne wspólne linie.Jak usunąć wspólne linie między dwoma plikami bez sortowania?
plik1.txt
Z
B
A
H
L
file2.txt
S
L
W
Q
A
Sposób używam usunąć wspólnych linii jest następujący:
sort -u file1.txt > file1_sorted.txt
sort -u file2.txt > file2_sorted.txt
comm -23 file1_sorted.txt file2_sorted.txt > file_final.txt
wyjściowa:
B
H
Z
Problemem jest to, że chcę zachować kolejność file1.txt, to znaczy:
pożądany wynik:
Z
B
H
Jedno rozwiązanie myślałam robi pętlę, aby przeczytać wszystkie linie plik2 .txt i:
sed -i '/^${line_file2}$/d' file1.txt
Ale jeśli pliki są duże, wydajność może się wyssać.
- Czy podoba Ci się mój pomysł?
- Czy masz jakąś alternatywę, aby to zrobić?
'a [0 0] = 7' Dlaczego równa się siedem? Dzięki! :) – harrison4
@JohnDoe potrzebujemy niezerowej liczby, 7 i 1 nie mają różnicy. Zmieniam go na 1, jeśli sprawi, że poczujesz się komfortowo. :-) – Kent
Tak, teraz czuję się znacznie lepiej. :) – harrison4