Saya punya file seperti ini:
other lines . . .
blah blah blah (:34)
Saya ingin menemukan angka-angka dalam file di atas. Saya datang dengan:
grep [0-9] filename
Tapi itu adalah mencetak keseluruhan:
blah blah blah (:34)
Sebaliknya saya hanya ingin 34
. Apakah ada cara untuk melakukannya?
man grep
Jawaban:
Anda dapat menggunakan
grep -E
untuk mengakses sintaks ekspresi reguler yang diperluas (Sama seperti egrep )Saya telah membuat file testfile dengan konten di bawah ini:
Sekarang untuk mengambil angka-angka saja dari teks yang dapat Anda gunakan
akan menjadi output.
Di sini "-o" digunakan untuk hanya menampilkan segmen pencocokan garis, daripada isi penuh garis.
Kurung berlekuk-lekuk (misalnya {dan}) menunjukkan jumlah instance pertandingan. {1,4} mensyaratkan bahwa karakter sebelumnya atau kelas karakter harus muncul setidaknya sekali, tetapi tidak lebih dari empat kali.
Semoga ini membantu
sumber
grep -Eo '[0-9]{1,}' testfile
Anda dapat menggunakan ekspresi braket RE yang
[:digit:]
ditentukan oleh bagian 9.3.5 dari standar POSIX , dikombinasikan dengan-o
bendera untuk mencetak hanya kata-kata yang cocok.sumber
grep -o
hanya akan mencetak bagian yang cocok dari garis. Kalau tidak, grep akan mencetak garis apa pun dengan pola.sumber
Saya akan menggunakan curl untuk mengakses file Anda secara lokal atau jarak jauh, maka saya akan grep garis dengan angka yang dibungkus (:) kemudian memotong potongan-potongan itu dan menulis ke file
jawaban yang diterima mengabaikan mungkin ada nomor di baris file sebelumnya, itu berfungsi untuk data contoh, tetapi bagaimana jika file itu jauh?
Lokal
Dalam contoh ini
output.txt
di folder Anda saat ini akan ditulis, kami mengaksesinput.txt
dari folder Publik Anda.Terpencil
Dalam contoh ini
output.txt
di folder Anda saat ini akan ditulis, kami mengaksesinput.txt
darihttps://yoursite.com/Public/
.sumber
curl
saat yang sederhanacat
akan dilakukan?