awk


Как узнать, чем именно занят swap

С помощью этого скрипта можно узнать, чем именно занят swap.

Скрипт написан на awk, более точно версия awk указана в комментарии скрипта. На данный момент тестировалось только на одной версии awk.

Текст скрипта доступен по ссылке https://gist.github.com/sagax/25495c279bb221e39813f1114547047c , я не очень понял, как тут добавить код с подсветкой awk. Как именно это выглядит в работе можно посмотреть тут https://asciinema.org/a/b1643wf79iair17p0xizracsb .

Если нашли ошибку - пишите в комментарии к этому совету или на gist. Надеюсь кому-нибудь этот совет окажется полезен.

#!/usr/bin/awk -f
# GNU Awk 4.1.1, API: 1.1
#
# place script to $HOME/bin/swaptop
# type chmod +x $HOME/bin/swaptop
# run!
 
function red(s)    { return "\033[0;30;41m" s "\033[0m" }
function mag(s)    { return "\033[0;30;45m" s "\033[0m" }
function orange(s) { return "\033[0;30;43m" s "\033[0m" }
function green(s)  { return "\033[1;30;42m" s "\033[0m" }
0
Ваша оценка: Ничего
romy4 аватар

Нумерация скачанной музыки

Идея в том, что вы скачиваете плейлист в правильном порядке, а потом эта неорганизованная куча файлов после команды опять стаёт в порядке плейлиста. Суть в том, что каждый файл сохраняет своё время изменения на секунду больше предыдущего. Этим надо воспользоваться.
Допустим, скачали кучу файлов из плейлиста в папку Music/new, там они сейчас в перемешку, так как имена разные. Делаем их в нужном порядке и нумеруем следующей командой (предварительно зайдя через консоль в Music/new):

ls -1rat | awk '/^[^.]/ {print $0}' | awk  '{name=sprintf("%03i - %s",NR,$0);system("mv \""$0"\" \""name"\"")}'

не сработает, если в названии есть (`) обратный апостроф

%03i - нумерация от 000 до 999, если надо 0000-9999, то ставим %04i

Ссылки в тему:

0
Ваша оценка: Ничего

Перенаправление вывода stdout в файл происходит с большой задержкой

В такой конструкции tail -f file | grep blabla > out.txt

Записи в out.txt попадают не сразу после того как появились в file а с большой задержкой. Это связано с буферизацией stdout. Чтобы строки появлялись сразу в out.txt нужно отключить буферизацию stdout.

tail -f file | stdbuf -oL grep blabla > out.txt

http://www.pixelbeat.org/programming/stdio_buffering/stdbuf-man.html

0
Ваша оценка: Ничего
bliznezz аватар

разрезаем текстовый файл по-строчно в другие файлы (striping)

вот такой нехитрый скрипт разобьет входной файл file.txt построчно на 3 файла: file.txt.0 file.txt.1 file.txt.2

awk -v PARTS=3 '{N=NR%PARTS ; print >> ARGV[1]"."N }' file.txt
0
Ваша оценка: Ничего
ramok аватар

Пример замены n-го появления строки в файле

Задача была озвучена так:

Цитата:

20:19 < todd_dsm> hey all, I have 1 file to modify (httpd.conf) I need to change the 2nd of for occurrences of "AllowOverride None". Is there a way do change the 2nd occurrence and leave 1,3, and 4 untouched?

Примерный перевод

Цитата:

У меня есть httpd.conf. Мне надо заменить второе появление в файле "AllowOverride None". Есть возможность заменить второе появление, не тронув первое, третье и четвертое?

Ответ:
Пример заменяет второе появление "AllowOverride None" на "replace".

$ printf "AllowOverride None\nAllowOverride None\nAllowOverride None\nAllowOverride None\n" |
    awk '/AllowOverride None/ && (++i == 2) {print "replace";next}{print}'

На sed

$ printf "AllowOverride None\nAllowOverride None\nAllowOverride None\nAllowOverride None\n" |
       sed -e '/AllowOverride None/{x;/^1$/{x;s/.*/replace/;x};s/$/1/;x}'
0
Ваша оценка: Ничего
banda аватар

Учет и мониторинг GPRS трафика

Для учета трафика не нашел ни одной подходящей мне программы и пришлось написать небольшой скрипт. Это мой первый скрипт, не судите строго :). Спасибо ребятам из канала #linux@RusNet за помощь советами.

0
Ваша оценка: Ничего

Как узнать MAC-адрес сетевой карты Ethernet

Довольно простенький скриптик позволяющий узнать MAC-адрес сетевой карты Ethernet:

#!/bin/bash
#Используемое устройство, может быть и eth1 и т.д.
DEVICE=eth0
#собственно команда, которой присвоенна переменная MAC_ADDRESS
MAC_ADDRESS=`ifconfig $DEVICE | awk '{print $5}' | head -n 1`
#Выводим на экран 
echo $MAC_ADDRESS
4
Ваша оценка: Ничего Рейтинг: 4 (1 vote)

сетевые возможности в популярных скриптовых языках

в bash встоенны особые средства для программирования сетевых возможностей
через доступ к файлам(которых на самом деле нет)

/dev/tcp/<hostaddr>/<hostport>
/dev/udp/<hostaddr>/<hostport>

можно достучаться до портов удаленных машин через tcp или udp протоколы.
для примера следующий код запросит страницу у вэб сервера запущеного на вашей локальной машине:

exec 3<>/dev/tcp/127.0.0.1/80      # привязать сокет связанный с хостом 127.0.0.1:80 к дескриптору номер 3
echo "GET /index.html" >&3         # отослать запрос хосту
cat <&3                            # получить ответ от хоста и вывести его в устройство стандартного вывода
exec 3<&-                          # закрыть дескриптор и сокет

прошу учесть что данными свойствами не обладает bash поставляемый с популярным дистрибутивом debian. так решили мэйнтейнеры из debian. по этому если вам нужна такая фича то придеться собирать бэш в ручную.

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)