Полезные Забавы

Изображение пользователя ramok.

Заменить повторяющиеся пустые строки на одну пустую строку

Tags: •  •  •  •  • 

Допустим у вас есть файл в котором множество повторяющихся пустых строк. А вам
хотелось бы повторяющиеся пустые строки заменить на одну пустую строку (что бы
было легче читать например).

sed -e ':a;/^$/N;/\n$/{D;ba}' file.txt

Примечание:


В *BSD системах, однострочник придется оформить так:
sed -e :a -e '/^$/N;/\n$/{D;ba' -e '}' file.txt

так как после имени метки и перед } необходим перевод строки.

Объяснение как это работает

Удалённое выключения компа без входа в систему

Tags: •  •  •  • 

В консоли от root выполняем следующие действия:

# adduser smile -u 0 -g 0 -d / -s /bin/smile
# cat > /bin/smile

внутри cat пишем:
#!/bin/sh
shutdown -h now

жмём ctrl+d и далее выполняем:
# chmod +x /bin/smile
# echo /bin/smile >> /etc/shells

Теперь с другой консоли или через ssh вползаем в систему под юзером smile

Информер в консоли

Tags: •  •  • 

Этот однострочник забирает и чистит "погодный информер" с gismeteo.ru, и может использоваться например в conky или в .bashrc

curl -s http://informer.gismeteo.ru/text/33345-1.JS|sed -e 's/^.*write("//g'|\
    sed -e 's/\(<[^>]*>\)\+/\n/g'|sed -e 's/");//g'|iconv -f cp1251 -t UTF-8

Изображение пользователя ramok.

Решение задачи однострочником на perl 2

Tags: •  •  • 

Еще одна задачка с http://www.esci.ru/kcc2/kcc2_t.php

Quote:

Задачка 4
Всем известная финская полька настолько сложна для воспроизведения и
ввиду необычной музыки, и ввиду непривычного русскому уху финского
языка, что каждый поет ее по-разному. И несмотря на то, что нот всего
7, у каждого получается фальшивить по-своему. Однако, нельзя сказать,
что русские люди настолько уж лишены слуха, что вообще не попадают в
ноты. Нет, вместо <<до>> они могут спеть только <<ре>>, а на замену
<<фа>> может прийти только <<ми>> и <<соль>>. Т.е. не происходит ошибки
большей, чем на одну ноту. Во входном файле задан набор нот (латиницей,
через пробелы, не больше 50), выведите число вариантов, которым может
спеть финскую польку талантливый русский народ.

К примеру, мелодию do re можно спеть шестью вариантами: do do, do re,
do mi, re do, re re, re mi.

input:
do re

output:
6

input:
do re mi fa sol la si

output:
972

Решение:

$ echo "do re mi fa sol la si" |\
  perl -pe 's/(do|si)/2/g;s/[^\s\d]+/3/g;s/ +/*/g;s/.*/$&/ee'
972

Итак, разберемся..

Kukushka-clock Update

Tags: •  •  •  • 

Обновлен пакет kukushka-clock до версии 0.4.0

Качается здесь (Debian):
http://rusmafia.org/linux/node/701

Изображение пользователя ramok.

Именованный pipe замкнутый сам на себя

Tags: •  • 
Абсолютно бесполезный пример как можно замкнуть именованный пайп сам на себя. для демонстрации на каждой итерации добавляется пара >< что бы продемонстрировать что что-то таки происходит Ж:-)
Изображение пользователя ramok.

Сбор статистики о используемых скриптовых языках

Tags: •  •  •  •  •  • 
Абсолютно безполезный скрипт для сбора статистики о наиболее часто используемых скриптовых языках. Можно использовать эту информацию в холиворах или как аргумент в тяжелых раздумиях какой скпиптовый язык изучать Ж:-)
Вот некоторая статистика собранная на некоторых доступных мне машинах: ...
Изображение пользователя ramok.

Алгоритм подсчета кол-ва бит в числе

Tags: •  •  •  •  • 

смотрим функцию bit_set_cnt()
работает, но сам алгоримт неочевиден Ж:-)

/* подсчет кол-ва бит в числе */
#include <stdio.h>

int bit_set_cnt(unsigned long);

int main()
{
    unsigned long i = 0xff;

    while(i--)
        printf ("i = %#x, set bit count = %d\n", i, bit_set_cnt(i));

    return 0;
}

int bit_set_cnt(unsigned long i)
{
    int cnt = 0;
    while (i)
    {
       i &= i - 1;
       cnt++;
    }
    return cnt;
}

Изображение пользователя ramok.

перевод чисел между 10 и 16-тиричными системами исчисления в консоли

Tags: •  •  •  •  • 

#1) sh

$ printf "%x\n" 29
$ printf "%d\n" 0x2c
$ let 0xff     # в OpenBSD не работает, в GNU и FreeBSD работает
$ echo $((16#2c)) # в FreeBSD не работает, в GNU и OpenBSD работает
$ echo $((0xff)) и echo $((077))

#2) bc

$ echo "obase=16;29" | bc
$ echo "ibase=16;2C" | bc

#3) dc

$ echo 29 | dc -e "16o?p"
$ echo 2C | dc -e "16i?p"

#4) awk

$ echo 29 | awk '{printf "%x\n", $0}'
$ echo 0x2c | awk '{print strtonum($0)}'

#5) perl

$ echo 29 | perl -ne 'printf "%x\n", $_'
$ echo 2c | perl -ne 'print hex $_'

я знаю есть еще множество способов, предлагайте еще! Ж:-)
как минимум редствами bash, zsh, sed (видел и такое Ж:-)

Изображение пользователя ramok.

Экспресс метод изучения Unix

Tags: • 

запускаем и читаем-читаем-читаем-.... Ж:-)
$ find `echo $PATH | sed 's/:/ /g'` -type f -exec basename {} \; | xargs man

А если интересует сколько же всего читать по можно попробывать это Ж:-)
$ PAGER=cat; find `echo $PATH | sed 's/:/ /g'` -type f -exec basename {} \; | xargs man 2>/dev/null | wc -l

Изображение пользователя ramok.

Перевод шеснадцатиричного представления IP в стандартную форму в конс

Tags: •  •  •  •  •  •  •  •  • 

перевод hex IP -> dec IP

1) bash only by ams

$ i=ffffffc0; echo $((0x${i:0:2})).$((0x${i:2:2})).$((0x${i:4:2})).$((0x${i:6:2}))

2) так короче но $[] dericated

$ i=ffffffc0; echo $[0x${i:0:2}].$[0x${i:2:2}].$[0x${i:4:2}].$[0x${i:6:2}]

3) тоже вроде только для bash как имеющий опцию -n в read

$ echo ffffffc0 | while read -n 2 D; do [ -z $D ] || printf "%d." 0x$D; done; echo

4) sh+sed

$ printf "%d.%d.%d.%d\n" `echo ffffffc0 | sed 's/\(..\)\(..\)\(..\)\(..\)/0x\1 0x\2 0x\3 0x\4/'`

5) тоже но немного разбираясь в sed Ж:-)

$ printf "%d.%d.%d.%d\n" `echo ffffffc0 | sed 's/\(..\)/0x\1 /g'`

6) printf only by ams. но это только смотреть, пайпы не пройдут Ж:-)
[code]

Изображение пользователя ramok.

Немного магии sed Ж:-)

Tags: •  •  • 

Несколько забавных примеров:

$ echo metric | sed -e strictest
metes
$ echo dated | sed -e statement
demented
$ echo routing | sed -e stoutest
resting
$ echo face | sed -e secede
fade
$ echo ontology | sed -e sentence
oncology

Для тех кто не понял подсказка Ж:-)
SUSv3 по этому поводу:

"Any character other than backslash or can be used instead of
a slash to delimit the BRE and the replacement."

RSS-материал