grep, regex, sed, awk, xargs, quvur zanjirlari
10-sinfDevOps5-hafta · 13-darsQidirish va naqsh
Almashtirish va ustunlar
Natijani argumentga
uniq dan oldin nega sort kerak?
uniq faqat yonma-yon takrorlangan qatorlarni birlashtiradi.Qidirish va naqsh
cat > app.log <<'EOF'
2025-03-01 10:00:01 INFO server started port=8080
2025-03-01 10:00:05 WARN disk 85%
2025-03-01 10:01:12 ERROR db timeout user=ali
2025-03-01 10:02:30 INFO login user=vali
2025-03-01 10:03:44 ERROR db timeout user=soli
EOF
grep ERROR app.log
grep -c ERROR app.log
grep -n -i "login" app.log
grep -v INFO app.log
grep -E "ERROR|WARN" app.log
grep "user=a.i" app.log
grep "^2025" app.log
grep -c ERROR app.log ikkita ERROR qatori bo'lgani uchun 2 chiqaradi. Naqshni tirnoqqa oling: shell * va $ belgilarini o'zgartirmasin.grep -v INFO app.log nimani chiqaradi?
-v mos kelmagan qatorlarni ko'rsatadi.Almashtirish va ustunlar
sed 's/ERROR/XATO/' app.log
sed -n '3,5p' app.log
sed '/INFO/d' app.log
awk '{print $3}' app.log
awk '$3=="ERROR" {print $NF}' app.log
awk '{print $3}' app.log | sort | uniq -c
awk -F: '{print $1}' /etc/passwd
sed -i faylni o'zgartiradi. Avval -i.bak bilan nusxa oling yoki natijani ekranda tekshiring.awk '{print $3}' app.log nimani chiqaradi?
$3 — bo'sh joy bilan ajratilgan uchinchi maydon.Natijani argumentga
ps aux | grep nginx | awk '{print $2}' | xargs kill -9
ps aux | grep [n]ginx | awk '{print $2}'
find . -name "*.log" | xargs grep -l ERROR
echo "a b c" | xargs -n 1 echo
ls *.txt | xargs -I {} cp {} yedek/
[n]ginx naqshi grep ning o'zini topmaydi. Avval kill siz natijani ko'ring, so'ng xargs kill qo'shing; imkon bo'lsa kill -9 o'rniga oddiy kill ishlating.xargs nima qiladi?
xargs stdin ni argumentlarga aylantiradi.Qidirish uchun grep, almashtirish uchun sed, ustun uchun awk.
Matn naqshini yozish tili
Qator boshi va oxiri
awk: oxirgi maydon
Chiqishni argumentga aylantiradi
grep ERROR app.log bilan kerakli qatorlar.
awk '{print $NF}' bilan kerakli ustun.
sort | uniq -c bilan takrorlar soni.
| Belgi | Ma'nosi | Misol |
|---|---|---|
| ^ | qator boshi | ^2025 |
| $ | qator oxiri | ali$ |
| . | istalgan bitta belgi | a.i |
| * | 0 yoki ko'p takror | ab* |
| [0-9] | raqam | [0-9][0-9]% |
| a|b | yoki (grep -E) | ERROR|WARN |
Pastga bosing: tekshiruv
app.log ni yarating (heredoc).grep -c ERROR app.log bilan 2 chiqishini tekshiring.awk '{print $3}' app.log | sort | uniq -c bilan sanoqni oling.
grep ERROR app.log
grep ERROR app.log | awk '{print $NF}'
# user=ali
# user=soli
Quvur bilan bir necha soniyada hisobot tayyor.
app.log da ERROR qatorlari sonini toping.sed bilan ERROR so'zini XATO ga almashtirib, faqat shu qatorlarni chiqaring.Qidiradi: -i -n -v -c -r -E.
sed almashtiradi, awk ustunlarni ishlaydi.
Chiqishni argumentga aylantiradi; ehtiyot bo'ling.
Uyga vazifa: app.log tahlili: grep, sed, awk va xargs.
crontab, at, htop, iotop
5-hafta · 14-dars