Содержимое sec.csv выглядит примерно так:
00:41 00:11 00:12 32 8 21:59 1:22 29:59
фактически, это время в минутах и секундах или просто в секундах. Привести его к виду hh:mm:ss можно командой:
cat sec.csv | sed -e "/:/ s/\(.*\)/00:\\1/" -e "/:/! s/\(.*\)/00:00:\\1/"
после чего данные выглядят так:
00:00:41 00:00:11 00:00:12 00:00:32 00:00:8 00:21:59 00:1:22 00:29:59
Отрицание указывается знаком "!" в конце конструкции "/:/!"
cat access_log | sed -n '/PATTERN/{=}'
cat access_log | sed -n '/PATTERN/{=;p;}'
cat access_log | sed -n '/PATTERN/{=;p;}'| sed '$!N;s/\n/:/'
| UNIX | SED |
|---|---|
| cat | sed ':' |
| cat -s | sed '1s/^$//p;/./,/^$/!d' |
| tac | sed '1!G;h;$!d' |
| grep | sed '/patt/!d' |
| grep -v | sed '/patt/d' |
| head | sed '10q' |
| head -1 | sed 'q' |
| tail | sed -e ':a' -e '$q;N;11,$D;ba' |
| tail -1 | sed '$!d' |
| tail -f | sed -u '/./!d' |
| cut -c 10 | sed 's/\(.\)\{10\}.*/\1/' |
| cut -d: -f4 | sed 's/\(\([^:]*\):\)\{4\}.*/\2/' |
| tr A-Z a-z | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' |
| tr a-z A-Z | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' |
| tr -s ' ' | sed 's/ \+/ /g' |
| tr -d '\012' | sed 'H;$!d;g;s/\n//g' |
| wc -l | sed -n '$=' |
| uniq | sed 'N;/^\(.*\)\n\1$/!P;D' |
| rev | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' |
| basename | sed 's,.*/,,' |
| dirname | sed 's,[^/]*$,,' |
| xargs | sed -e ':a' -e '$!N;s/\n/ /;ta' |
| paste -sd: | sed -e ':a' -e '$!N;s/\n/:/;ta' |
| cat -n | sed '=' | sed '$!N;s/\n/ /' |
| grep -n | sed -n '/patt/{=;p;}' | sed '$!N;s/\n/:/' |
| cp orig new | sed 'w new' orig |
| hostname -s | hostname | sed 's/\..*//' |
Оригинал примеров здесь
for i in *.txt; do sed -i "/^\^/ s/^\^\([^\^]*\)\^\^/====\1====/;/^=/ s/$/ \n^ Команда ^ Описание ^/" $i; done
Эта строка проходит в цикле по всем файлам в текущем каталоге, имена которых оканчиваются на .txt, и:
/^\^/ s/^\^\([^\^]*\)\^\^/====\1====/ – если строка начинается с "^", заменить "^ Текст ^^". на "==== Текст ====";/^=/ s/$/ \n^ Команда ^ Описание ^/ — если строка начинается на "=" (а она начинается, т.к. в предыдущем пункте мы сами это сделали, и здесь условие только для того, чтобы не трогать остальные строки), заменить эту строку на неё же, плюс возврат каретки, плюс "^ Команда ^ Описание ^". Другими словами, вставить после такой строки строку содержащую "^ Команда ^ Описание ^".Для чего это? Вот для чего. Я разбил длинный dokuwiki-файл с командами линукс на мелкие файлы. Они получились вида:
^ Анализ файловых систем ^^ | badblocks -v /dev/hda1 | проверить раздел hda1 на наличие bad-блоков | ...
Данная последовательность команд превратила их все в вид:
==== Анализ файловых систем ==== ^ Команда ^ Описание ^ | badblocks -v /dev/hda1 | проверить раздел hda1 на наличие bad-блоков | ...
Для удаления строки, содержащей определённый контекст, можно использовать следующую конструкцию:
sed -i "/^AUTO_SAVE/ d" notes.ini
Эта команда в файле notes.ini удаляет все строки, начинающиеся с AUTO_SAVE.
Для удаления строки или нескольких строк в файле я использую следующую конструкцию:
sed -i '2,1d' <file_name>
Эта команда в файле <file_name> удаляет вторую строку.
Или:
sed -i '5,10d' <file_name>
Эта команда в файле <file_name> удалит десять строк начиная с пятой (включая пятую).