grep "something" anyfiles.log> afile.csv, tidak perlu mencetak jalur input dan nama file ke file CSV

9

Saya punya beberapa file log, mereka memiliki lebih dari 30000 baris. Saya perlu menemukan nama "domain" dan menyimpan dalam file CSV tetapi setelah menyimpan, setiap baris dalam file CSV telah ditambahkan jalur dan nama file dari file input pada awal baris file CSV. Bagaimana saya bisa melakukannya jika saya tidak perlu path dan input nama file ditambahkan ke file CSV.

Contoh:

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

Salam, tolong bantu saya jika ada yang tahu

Chaxiong
sumber

Jawaban:

21

Gunakan --no-filenameopsi untuk grep.

Menekan awalan nama file pada output. Ini adalah default ketika hanya ada satu file (atau hanya input standar) untuk dicari.

grep --no-filename "domain" 

Referensi: Manual Grep

Nemo
sumber
1

Lihat man cutdetailnya, tetapi jawaban singkatnya adalah grep "domain" /home/logs/*.log | cut -d: -f2 >newfile.csv.

Atau lihat man grepdan lakukangrep -o "domain" /home/logs/*.log >newfile.csv

PS: grep TIDAK mengeluarkan nama file jika hanya ada SATU file pada baris perintah, seperti grep "domain" /home/logs/any.logpada contoh Anda. Jika Anda ingin memaksa nama file menjadi keluaran, grep "domain" /home/logs/any.log /dev/nullakan melakukan trik.

waltinator
sumber
man cut... terdengar menyakitkan.
Matt Fletcher