/ / Informazioni su 'grep -f': combacia con file - grep

Informazioni su 'grep -f': combacia con file - grep

Sto usando il grep -f funzione per estrarre le linee da un file che corrisponde a un particolare modello. Diciamo che il mio file di pattern è pattern.txt, come segue.

1
2
3
4
5

E il file su cui sto facendo corrispondere questo modello è file.txt,

1::anv
2::tyr
3::yui
4::fng
5::gdg
6::ere
7::rer
8::3rr
9::gty

Ora quando eseguo grep -f pattern.txt file.txt, sto ricevendo questo ->

1::anv
2::tyr
3::yui
4::fng
5::gdg
8::3rr

L'ultima riga nell'output sopra, sta causando il mio problema. Come modifico questo comando grep in modo da ottenere l'output (mostrando corrispondenze corrette) come segue?

1::anv
2::tyr
3::yui
4::fng
5::gdg

risposte:

12 per risposta № 1

Inserisci ^ prima dei tuoi schemi così grep corrisponderà all'inizio di una linea con il tuo modello. Se il tuo modello è in realtà un insieme di numeri, non hai bisogno di un elenco di modelli ^[1-5]:.


6 per risposta № 2

Bene, ci sono molte possibili soluzioni. Stai dicendo grep per trovare tutte le righe contenenti un 3, e la riga "8 :: 3rr" contiene infatti un 3. quindi devi essere più specifico in ciò che stai cercando.

Ad esempio, puoi cambiare i pattern in "1:"," 2: ", ecc. Per far corrispondere solo i numeri seguiti da due punti, oppure puoi cambiarli in" ^ 1 "," ^ 2 ", ecc. Per far combaciare solo i numeri all'inizio della riga. i tuoi dati, ma probabilmente vuoi entrambi, in modo che la ricerca di "1:" non corrisponda a "21:" e la ricerca di "^ 5" non coincida "53:". In questo caso il tuo file di pattern sarebbe come questo:

^1:
^2:
^3:
^4:
^5: