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

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


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.


man cut... terdengar menyakitkan.
Matt Fletcher
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.