Много буков в первом комментарии
ШПАРГАЛКА ПО SED
собранные Эриком Пементом (Eric Pement)HANDY ONE-LINERS FOR SED (Unix stream editor) 23 марта, 2001
ШПАРГАЛКА ПО SED
собранные Эриком Пементом (Eric Pement) pemente@northpark.edu версия 5.1
Последняя версия доступна на:
www.student.northpark.edu/pemente/sed/sed1line.txt http://www.student.northpark.edu/pemente/sed/sed1line.txt
www.cornerstonemag.com/sed/sed1line.txt http://www.cornerstonemag.com/sed/sed1line.txt
This file is also available in Portuguese at:
www.lrv.ufsc.br/wmaker/sed_ptBR.html http://www.lrv.ufsc.br/wmaker/sed_ptBR.html
Теперь и по-русски:
rkorepanov.narod.ru/doc/sed.html
РАЗРЫВЫ ФЙЛА:
# заменяем ПРОБЕЛ на двойной пробел
sed G
# ставим двойной пробел с уже имеющимися в файле пустыми строками. Выходной файл
# должен содержать не более одной пустой строки между строками текста
sed '/^$/d;G'
# Тройной пробел в файле
sed 'G;G'
# отменить двойные пробелы (предполагается, что пронумерованные строки всегда пустые)
sed 'n;d'
ЧИСЛА:
# ставим номер каждой строки файла (левое выравнивание). Использование табуляции (смотри
# особенности применения 't' в конце этого файла) в отличие от пробела сохранит отступ(ы).
sed = filename | sed 'N;s/n/t/'
# ставим номер каждой строки файла (число слева, выравненное по правому краю)
sed = filename | sed 'N; s/^/ /; s/ *(.{6,})n/1 /'
# ставим номер каждой строки файла,но только если строка не пустая
sed '/./=' filename | sed '/./N; s/n/ /'
# считаем количество строк (аналог "wc -l")
sed -n '$='
ПРЕОБРАЗОВАНИЯ И ЗАМЕНА ТЕКСТА:
# В СРЕДЕ UNIX: переводит DOS стандарт перевода строки (CR/LF) в формат Unix
sed 's/.$//' # полагем , что все строки оканчиваются CR/LF
sed 's/^M$//' # в bash/tcsh, нажимем Ctrl-V затем Ctrl-M
sed 's/x0D$//' # для gsed 3.02.80, но выше попроще
# В СРЕДЕ UNIX: преобразовываем символы новой строки Unix (LF) в DOS формат
sed "s/$/echo -e \r
/" # командная строка в ksh
sed 's/$'"/echo \r
/" # командная строка в bash
sed "s/$/echo \r
/" # командная строка в zsh
sed 's/$/r/' # для gsed 3.02.80
# В СРЕДЕ ДОС: преобразуем символы перевода строк Unix (LF) в DOS формат
sed "s/$//" # способ 1
sed -n p # способ 2
# В СРЕДЕ ДОС: преобразуем символы перевода строки ДОС (CR/LF) формат Unix
# этого нельзя сделать DOS версией sed. Используем "tr"
tr -d r <infile >outfile # GNU tr версии 1.22 или выше
# удаляем отступы (пробелы,табуляции) с начала каждой строки
# выравниваем текст полностью по левому краю
sed 's/^[ t]*//' # смотри проблемы с 't' в конце файла
# удалить замыкающие пробелы, табуляции с конца каждой строки
sed 's/[ t]*$//' # смотри проблемы с 't' в конце файла
# удаляем отступы, пробелы, табуляции и с конца , и с начала строки
sed 's/^[ t]//;s/[ t]$//'
# вставляем 5 пробелов в начале каждой строки (отступ для строки)
sed 's/^/ /'
# выравниваем весь текст справа по ширине колонки 79 символов
sed -e :a -e 's/^.{1,78}$/ &/;ta' # 78 плюс 1 пробел
# центрируем весь текст посредине при ширине колонки 79 символов.В первом способе
# пробелы в начале строки нужны, а пробелы в конце строки дополняются до конца строки.
# Второй способ, пробелы в начале строки отбрасываются в центр строки, и нет
# завершающих пробелов до конца строки.
sed -e :a -e 's/^.{1,77}$/ & /;ta' # Способ 1
sed -e :a -e 's/^.{1,77}$/ &/;ta' -e 's/( *)1/1/' # Способ 2
# подстановка (найти и заменить) "foo" на "bar" в каждой строке
sed 's/foo/bar/' # заменяет только первое вхождение в строке
sed 's/foo/bar/4' # заменяет только 4 вхождение в строке
sed 's/foo/bar/g' # заменяет ВСЕ вхождения в строке
sed 's/(.)foo(.foo)/1bar2/' # заменяет друг за другом
sed 's/(.*)foo/1bar/' # заменяет только завершающее слово
# ЗА