Puncte:0

Script Bash: compararea a două fișiere text

drapel by

Mă întreb cum pot face acest lucru eficient. Având în vedere două fișiere, să spunem a.txt și b.txt, vreau să scriu un script bash pentru a face următoarele:

Fiecare linie din a.txt care conține „*” care nu există în b.txt va fi adăugată la sfârșitul lui b.txt cu un marcaj de timp.

grep „*” a.txt echo „$(data)” >> b.txt
pLumo avatar
drapel in
Vă rugăm să vă editați întrebarea și să adăugați câteva exemple de fișiere și rezultatul așteptat.
terdon avatar
drapel cn
Nu există nicio modalitate de a fi eficient la distanță în bash. Acest lucru _trebuie_ să fie o lovitură? Văd că ești cel puțin deschis la instrumente non-bash, cum ar fi `grep`, așa că putem folosi și `awk` sau `sed` sau `perl` etc? Shell, orice shell, este un instrument oribil pentru procesarea textului: va fi întotdeauna lent și ineficient.
Taro avatar
drapel by
@terdon iti multumesc ca m-ai luminat.
Puncte:0
drapel za

Vă sugerez să utilizați un al treilea fișier pentru rezultate, astfel încât să nu încurcați fișierul b.txt. Ai putea incerca asta:

cp b.txt c.txt 
pentru linia în $(grep '*' a.txt); do
    # pentru fiecare linie găsită în a.txt
    echo „Găsit: $line”
    grep -q $line b.txt # verificați prezența acestuia în b.txt
    dacă [ $? -ne 0]; atunci
        # dacă rezultatul grep nu este egal cu 0
        # înseamnă că linia nu a fost găsită în b.txt
        # apoi tipăriți linia într-un al treilea fișier cu marcajul temporal principal
        echo "$(data): $line" >> c.txt
    fi
Terminat

Este clar că poate ar trebui să îmbunătățești grep-ul, deoarece nu știu dacă este compus rândul în care cauți „*”.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.