grep "qualcosa" anyfiles.log> afile.csv, non è necessario stampare il percorso di input e il nome del file nel file CSV


9

Ho alcuni file di log, hanno più di 30000 righe. Devo trovare il nome "dominio" e salvare nel file CSV ma dopo il salvataggio, a tutte le righe nel file CSV è stato aggiunto il percorso e il nome del file di input all'inizio della riga stessa del file CSV. Come posso fare se non ho bisogno di aggiungere il percorso e il nome del file di input ai file CSV.

Esempio:

Input
#cat /home/log/any.log

any things..domain, anything
any things..domain, anything
any things..domain, anything


grep "domain" /home/logs/any.log > newfile.csv

Output:
#cat newfile.csv
/home/logs/any.log:domain
/home/logs/any.log:domain
/home/logs/any.log:domain


#----My requirement output is:

cat newfile.csv
domain
domain
domain

Cordiali saluti, per favore aiutatemi se qualcuno lo sa

Risposte:


21

Usa l' --no-filenameopzione per grep.

Sopprime il prefisso dei nomi dei file in uscita. Questo è il valore predefinito quando c'è un solo file (o solo input standard) da cercare.

grep --no-filename "domain" 

Riferimento: Manuale Grep


1

Vedere man cutper i dettagli, ma la risposta breve è grep "domain" /home/logs/*.log | cut -d: -f2 >newfile.csv.

Oppure guarda man grepe faigrep -o "domain" /home/logs/*.log >newfile.csv

PS: grep NON genera il nome del file se c'è solo UN file sulla riga di comando, come grep "domain" /home/logs/any.lognel tuo esempio. Se vuoi forzare l'output dei nomi di file, grep "domain" /home/logs/any.log /dev/nullfarà il trucco.


man cut... sembra doloroso.
Matt Fletcher,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.