Permintaan saya adalah untuk mengekstraksi nilai antara tanda kutip ganda ""
. Input sampel adalah:
10.219.41.68 - - - [11 / Jun / 2014: 10: 23: 04 -0400] Sec: 0 MicSec: 1797 "GET / balancer-manager HTTP / 1.1" 200 28980 "-" "curl / 7.15.5 (i386 -redhat-linux-gnu) libcurl / 7.15.5 OpenSSL / 0.9.8b zlib / 1.2.3 libidn / 0.6.5 "
Saya memiliki file log besar, sehingga nilai dapat bervariasi untuk setiap baris, perlu mengekstrak nilai antara kemunculan tanda kutip ganda…
Output yang diharapkan:
GET /balancer-manager HTTP/1.1
Ada yang punya ide maka silakan sarankan.
Jawaban:
Anda bisa menggunakannya
cut
untuk ini:-d '"'
memberitahucut
untuk menggunakan kutipan ganda sebagai pembatas bidangnya.-f2
memintanya untuk mengambil bidang kedua, yaitu antara kutipan pertama dan kedua - atau string yang dikutip pertama, persis apa yang Anda inginkan.sumber
%!cut -d '"' -f2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58
?Cara menggunakan
awk
Jika karena alasan yang tidak masuk akal, metode HTTP Anda sebenarnya
0
dan Anda ingin menampilkannyasumber
$2
itu nol?0
, bukan hanya nol?Karena sebuah
awk
danperl
solusi sudah disediakan, saya ingin mencobased
:sumber
Anda bisa melakukannya dengan banyak cara.
Dengan
awk
:Dengan
perl
:sumber
memproses angka input yang dikutip
sumber