Linux Komutları ve Kabuk Becerileri
awk: Sütunlar Programa Dönüştüğünde
awk, sütunlar iş birimi haline geldiğinde ulaşacağınız şeydir: nginx erişim günlükleri, /etc/passwd, df çıktısı, alanlarda yaşayan her şey. Bu, tek satırlık kıyafetler giyen eksiksiz bir dildir (değişkenler, diziler, aritmetik, desen-eylem kuralları), ki bu da günlük adli tıp için tam olarak doğru kılık değiştirmedir. Dürüst sınır: awk'un rahatça yaptığı her şey tek satırlıktır ve bir sayfa blok gerektiren her şey, henüz kendini kabul etmemiş bir Python betiğidir.
Ana noktalar
- Alan bölme temel püf noktasıdır: awk -F: '$3 >= 1000 {print $1}' /etc/passwd gerçek kullanıcıları listeler ve -F'[,|]', kesme zaten vazgeçildiğinde çok karakterli sınırlayıcıları işler.
- İlişkisel dizilerle sayın: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure herhangi bir günlüğü tek satırda bir frekans tablosuna dönüştürür.
- NR ve NF dosya sorularını yanıtlar: 'NR==1' başlık satırıdır, '{print NF}' satır başına sütunları sayar ve NR'yi başka bir dosyanın kayıtlı değerleriyle karşılaştırarak kopyaları ve boşlukları bulur.
- Match plus extract günlük ekmektir: awk '/ 500 / {print $7, $9}' erişim.log URL'li hata sayfalarını çeker ve OFS, tek bir alanı düzenledikten sonra satırı kendiniz yeniden yazmanıza gerek kalmadan $0'ı yeniden yazdırmanıza olanak tanır.
- BEGIN ve END blokları, toplu çalışmanın yaşadığı yerdir: BEGIN ayırıcıları ayarlar, ortadaki kurallar satır başına çalıştırılır, END toplamları yazdırır; üç blok iyi okunur, beş blok ise kılık değiştirmiş bir senaryodur.
- Alıntı yapmak, kabuk tek satırlık dizelerin gerçek düşmanıdır: programa tek tırnak işareti koyun, içindeki değişmezleri çift tırnak içine alın ve çift tırnaklı kabuk dizesinin içindeki $7'nin hiçbir zaman awk'a ulaşmadığını unutmayın.
- Sayısal çalışma LC_ALL=C olur: sayılarda ve tekli harmanlamalarda yerel ayar virgülleri karşılaştırmaları çevirir ve yanlara doğru sıralama yapar ve yerel ayarı sabitlemek öğleden sonrayı kurtaran bir satırdır.
- Tavanı bilin: CSV içindeki tırnaklı virgüller, iç içe JSON veya durum bilgisi olan çok satırlı formatlar Python'a gider; awk bir neşterdir ve öyle kalır.
Saha notu
Yerel ayar virgülleriyle bir günlükteki dolar sütunlarını toplayan garip bir tek satırlık muhasebe raporu açana kadar kimsenin sorgulamadığı rakamlar üretti. LC_ALL=C o hafta takma ad kitaplığımıza taşındı ve orada kaldı.
Sık sorulan sorular
awk mı yoksa sütun çalışması için mi kesilmiş?
bir sabit ayırıcı ve düz bir sütun listesi için kesilmiş; koşullar, normal ifade, aritmetik veya toplamlar ortaya çıktığı anda kesme zaten derinliğinin dışındadır.
Bir sütunu nasıl toplayabilir veya ortalamasını nasıl alabilirim?
END'de topla: awk '{s += $5} END {print s, s/NR}' satırlar boyunca beşinci alanı ekler ve ortalamasını alır; Bir yerel ayar sayıların arasına virgül koyarsa önce binlik ayırıcıyı çıkarın.
Awk tek satırım neden macOS'ta farklı davranıyor?
macOS, -i inplace veya gensub gibi GNU uzantıları olmadan bir POSIX awk gönderir; Linux'ta çalışan komut dosyaları orada sessizce başarısız olabilir, bu nedenle tek satırlık POSIX şeklinde tutun veya şaşkınlığı yanınızda taşıyın.
awk JSON'u ayrıştırabilir mi?
Anlamlı değil: JSON'un anlayabileceği bir sütun yapısı yoktur ve regex hack'leri iç içe geçmiş nesnelerde bozulur. JSON için awk şekli olan jq'yi veya iş büyüdüğünde Python'un json modülünü kullanın.
Kinetikatech linux komutları ve kabuk becerileri konusunda nasıl yardımcı oluyor
Bu işi yüzlerce kez yaptık: Bir yöneticinin bir sunucuyu mu çalıştıracağına yoksa onunla mücadele mi edeceğine karar veren komutlar ve komut dosyası oluşturma alışkanlıkları: her temel kurulumda bulunan araçlarla metin ve süreçleri arayın, dönüştürün, aktarın ve denetleyin. Linux Sunucu Güvenliği ve Sunucu Yönetimi ile işin tamamını devralırsınız. Değerlendiririz, uygularız, 7/24 izleriz ve kritik anlarda 30 dakika içinde müdahale ederiz.