пред. след. стартстоп
0 0
Добавлено в корзину

Прмеры sed

 

 

поиск
RDP win
sed
Ubuntu
    rename-files
кодировки
виртуалки
полезности 

 

 

 

 

Обрезать строку от начала ДО символа <                          sed 's/.*<//'    или   grep -o '^[^<]*'    или   sed 's/<.*//'

Обрезать строку ПОСЛЕ символа < и до конца                  sed -r 's/>.+//'

Строчные буквы и без пробелов с табуляцией:
sed -i 's/.*/\L&/; s/^[ \t]*//; s/[ \t]*$//'

Поменять строки попарно местами

 cat файл|perl -e 'while(<>){if($i%2==0){$f=$_;}else{print; print $f;}; $i++;} if ($i%2==1) {print $f;}'

Вставит # в начало строки, содержащей в начале Заглавные буквы на кирилице

sed '/^[А-Я]/s/^/#/g' 

# удаляем пробелы и табуляции с начала каждой строки
 # весь текст выравнивается по левому краю
 sed 's/^[ \t]*//'                    

 # удаляем пробелы и табуляции в конце каждой строки
 sed 's/[ \t]*$//'                    

 # удалить пробелы и табуляции как в начале так и в конце строки
 sed 's/^[ \t]*//;s/[ \t]*$//'

 # вставить 5 пробелов в начале каждой строки (смещение страницы)
 sed 's/^/     /'

 # выравнивание всего текста по правому краю на ширину колонки 79
 sed -e :a -e 's/^.\{1,78\}$/ &/;ta'  # задаем 78 плюс 1 пробел

 # выровнять весь текст по центру, два метода
 sed  -e :a -e 's/^.\{1,77\}$/ & /;ta'                     # method 1
 sed  -e :a -e 's/^.\{1,77\}$/ &/;ta' -e 's/\( *\)\1/\1/'  # method 2

 # замена в каждой строке "foo" на "bar"
 sed 's/foo/bar/'   # заменяет только первое найденное значение в строке
 sed 's/foo/bar/4'  # заменяет только 4 первых значений в строке
 sed 's/foo/bar/g'  # заменяет все значения в строке
 sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # заменяет следующий за встреченным
 sed 's/\(.*\)foo/\1bar/'  # заменяет только последнее "foo"

 # заменить "foo" на "bar" ТОЛЬКО для строк, в которых есть "baz"
 sed '/baz/s/foo/bar/g'

 # заменить "foo" на "bar" КРОМЕ тех строк, в которых есть "baz"
 sed '/baz/!s/foo/bar/g'

 # заменить "scarlet" или "ruby" или "puce" на "red"
 sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'   # все seds
 gsed 's/scarlet\|ruby\|puce/red/g'                # GNU sed

 # расстановка строк в обратном порядке (эмуляция "tac")
 # bug/feature в HHsed v1.5 удаляет еще и все пустые строки
 sed '1!G;h;$!d'      # метод 1
 sed -n '1!G;h;$p'   # метод 2

 # reverse each character on the line (emulates "rev")
 sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'

 # соединяет пары строк друг с другом (как "paste")
 sed '$!N;s/\n/ /'

 # если строка заканчивается на backslash (\), присоединить следующую
 # строку к ней
 sed -e :a -e '/\\$/N; s/\\\n//; ta'

 # если строка начинается со знака равенства, добавить ее
 # к предыдущей строке и заменить "=" на один пробел
 sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'

 # разделять числа запятыми, заменяет "1234567" на "1,234,567"
 gsed ':a;s/\B[0-9]\{3\}\>/,&/;ta'                     # GNU sed
 sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'  # все seds

 # добавить запятые для чисел с десятичной точкой и знаком минуса
 gsed -r ':a;s/(^|[^0-9.])([0-9]+)([0-9]{3})/\1\2,\3/g;ta'

 # добавить строку каждые 5 строк (после строк 5, 10, 15, 20, и тд.)
 gsed '0~5G'                  # GNU sed
 sed 'n;n;n;n;G;'             # все seds

Поступление колёс, колёсных опор и роликов -  · 2016-01-20 08:53:12
sed -r 's/ [0-1].+$//'
Поступление колёс, колёсных опор и роликов -  · 2016-01-20

Удаляем теги HTML:
sed -r -e :a -e 's/<[^>]*>//g;/</N;//ba; /[()&]/d'

Выравнивание по левому краю
sed 's/^[ \t]*//'

Параметр -i служит для изменения в файле

Все буквы будут большими:
sed -i 's/.*/\U&/' *.txt

Все буквы будут маленькими:
sed -i 's/.*/\L&/' *.txt

Сцепить строки из файла в одну:
sed ':a;N;$!ba;s/\n//g' file

Удалить пустые строки:
sed '/^$/d'

Сцепить попарно строки:
sed 'N;s/\n/ - /'

Вставить в окончание строки .txt
sed 's/$/\.txt/g'

Строка в колонку после "символ":
sed 's/символ/\n/g'

Jun 13 12:37:15 nxdomain dhcpd: DHCPACK on 10.33.55.128 to 28:ba:b5:bd:d0:85 (android-2e785e0221e0c325) via eth1
sed 's/Jun [ 0-9:]*.*on //g'
10.33.55.121 to a0:b4:a5:2b:7b:0d (android-79c22831014bd70b) via eth1


Печатать часть файла основываясь на номерах строк (строки 8-12, включительно):

    Версия 1:    sed -n '8,12p'

    Версия 2:    sed '8,12!d'

Печатать все линии между двумя регулярными выражениями (включительно):

        sed -n '/Начало/,/Окончание/p'  (регистро зависимый)

Печатать все линии ИСКЛЮЧАЯ часть между двумя регулярными выражениями:

        sed '/Начало/,/Окончание/d'


Использование переменных в скрипте:
Для sed:
1) кавычки не одинарные, а двойные.
2) имя переменной заключается в фигурные скобки

I=**
J=***
sed -n "${I},${J}p" file

Для grep:
...
t=$(echo $a | grep -o "^$var")
...