Админим с Буквой
5.52K subscribers
303 photos
8 videos
59 files
1.16K links
Канал о системном администрировании, DevOps и немного Инфобеза.

По всем вопросам обращаться к @bykva. Рекламу не размещаю.
Download Telegram
awk tips

pass bash variable to awk:

for ((i=1;i<=33;i++)); do
echo $string | awk -v position=$i '{print substr($0,position,1)}')
done


#awk #bash
список тегов, используемых в канале:

—-------------------------------
Лекции и материалы
—-------------------------------
#Занятие
#Лекции
Лекция

—---------
Linux
—---------
#ssh
#bash
#awk
#tmux
#console
#utils
#troubleshooting
#nmap

—----------
DevOps
—----------
#jenkins
#ansible
#git
kubernetes

—------------------
Virtualization
—------------------
#vmware
vagrant

—------------------
Networking
—---------------—
#networking

—---------
InfoSec
—---------
#vulns

—-------------
Windows
—-------------
#RDTS
#windows_server2012
#RDP

—------------------------------------------------
Ссылки и сторонние материалы
—------------------------------------------------
#read
#thirdparty

UPD 28/12/17
Список тегов, используемых в канале:

—-------------------------------
Лекции и материалы
—-------------------------------
#Занятие
#Лекции
Лекция
#junior

—---------
Linux
—---------
#ssh
#bash
#bash_tips_and_tricks
#awk
#tmux
#console
#utils
#troubleshooting
#nmap
#apt
#bind
#sound
#power_management

—----------
DevOps
—----------
#jenkins
#ansible
#git
#kubernetes
#deploy
#ceph
#docker
#puppet

—------------------
Virtualization
—------------------
#vmware
vagrant

—------------------
Networking
—---------------—
#networking
#proxy
#socks

—---------
InfoSec
—---------
#vulns
#security
#ctf

—-------------
Windows
—-------------
#RDTS
#windows_server2012
#RDP

—------------
Datacenters
—---------—
#ovh
#hetzner

—-------
Other
—-------
#android
#jira

—------------------------------------------------
Ссылки и сторонние материалы
—------------------------------------------------
#read
#thirdparty

Updated: 29.05.18
парсим вывод и приводим в нужный вид

Тут в чате прислали ссылку на пример того как человек парсил вывод сайта, чтобы выцепить видео:

$ curl -s "https://www.docker.com/dockercon/2019-videos/" | grep -i -A3  "2019-videos?"  | grep -v "\-\-" | grep -v "img id" | sed 's/<a href="/https:\/\/www.docker.com/g' | sed 's/">//g' | sed 's/<p>//g' | sed 's/<\/p>//g' | sed 'n;G;'

кмк это немножечко не практично. И поэтому в рамках самообучения я решил поднатаскать свои навыки в awk. В итоге получился такой вариант:

curl -s "https://www.docker.com/dockercon/2019-videos/" | \
awk 'match($0, /dockercon\/2019-videos\?watch=.*[a-zA-Z0-9]/) \
{ print "https://www.docker.com/"substr( $0, RSTART, RLENGTH ) } \
{ getline; if ( match($0, /<p>(.*)<\/p>/, m) ){print m[1]"\n"}}'

З.Ы. не являюсь гуру авк, парсинга и прочего. Если у вас есть мнение что мое решение не совсем верно или можно сделать красивее\лаконичнее, прошу вас писать замечения в ЛС (с пруфами) и я обязательно опубликую ваш вариант.

#awk #sed #grep
awk regexp delimeter

Все вы наверняка знаете про то что можно указать awk разделитель, который будет использоваться для разбиения на столбцы, но оказывается можно не просто указывать разделитель-символ, но вообще писать регулярное выражение. Например задача по выявлению времени rtt из ping вместо использования всяких cut\sed\egrep превращается в такую лаконичную форму:

ping -c 1 8.8.8.8 | awk -F" |=" '/time=/{print $10}'


З.Ы. да, это можно решить 100500 способами с использованием 100500 других тулзов. задача была рассказать про регулярки в делиметре и привести простой пример.

#awk #notes