==================================================================================== === Замена всех ip-адресов (или цифр) в файлах на строку IPADDRESS: ==================================================================================== # find ./ -type f -exec sed -i 's/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/IPADDRESS/g' {} + # find ./ -type f -not -path "./.git/*" -exec sed -i 's/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/IPADDRESS/g' {} +- замена всех ip-адресов (или цифр) в файлах на строку IPADDRESS, исключая один каталог ==================================================================================== === Про sed (практически впервые): ==================================================================================== # sed -i -e 's/?xml version=x271.0x27 encoding=x27UTF-8x27?/CHANGED_BY_SCRIPT/g' == Это говно делает замену строки с одинарными кавычками на текст. Одинарные кавычки заменены своим кодом (hex) - x27. Я хуею. == ==================================================================================== === Заменить строку string1 строкой string2: ==================================================================================== # sed 's/string1/string2/g' ==================================================================================== === Извлечь цифры из строки: ==================================================================================== # NUMBER=$(echo "I am 999 years old." | tr -dc '0-9') == Или == # NUMBER=$(echo "I am 999 years old." | sed 's/[^0-9]*//g') ==================================================================================== === Выделить последовательность символов из названия файла /home/test/test_1970-01-01-00-00.gz: ==================================================================================== # ls /home/test | sed 's/test\_//g; s/\-00\-00.gz//g' 1970-01-01 ==================================================================================== === Окрасить последовательность символов в файле в цвет: ==================================================================================== # cat logfile.log | sed ''/START/s//$(printf "\033[32mSTART\033[0m")/'' ==================================================================================== === Удалить комментарии из файла: ==================================================================================== # sed -e 's/#.*$//' -e '/^$/d' inputFile ==================================================================================== === Как заставить sed, используя оператор замены по паттерну вместе с ОДИНАРНЫМИ кавычками (именно такое условие было, потому что, как я понимаю, всё, находящееся в одинарных кавычках, не требует экранирования), корректно использовать значение переменной: ==================================================================================== == Пример выглядит следующим образом: == # sed 's/test/'"$TEST11"'/g' filename Нужно будет как-нибудь в очередной раз перечитать, почему именно таким образом расставленные кавычки дают корректный результат. Я понимаю, что логичнее было бы использовать именно парные кавычки, но ситуация сложилась так, что огромный паттерн мне проще было запихнуть в одинарные. ==================================================================================== === Убрать виндовые символы переноса строки в файле: ==================================================================================== # sed -i 's/\r//g' filename.txt ==================================================================================== === Вставить строку после строки с совпавшим паттерном: ==================================================================================== # sed -i '/pattern/a afterpattern' file ==================================================================================== === Вставить табуляцию в начало строки: ==================================================================================== # sed -i '/pattern/a\\tafterpattern' file ==================================================================================== === Ключ -n - подавление дефолтного вывода при успешном срабатывании команды; опция 'p' - печать содержимого файла: ==================================================================================== # sed -n 'p' employee.txt 101,John Doe,CEO 102,Jason Smith,IT Manager 103,Raj Reddy,Sysadmin 104,Anand Ram,Developer 105,Jane Miller,Sales Manager ==================================================================================== === Ключ -e используется для поиска по нескольким паттернам: ==================================================================================== # sed -n -e '/^root/ p' -e '/^nobody/ p' /etc/passwd ==================================================================================== === Печать только второй строки содержимого файла: ==================================================================================== # sed -n '2 p' employee.txt ==================================================================================== === Печать строк с первой по четвертую: ==================================================================================== # sed -n '1,4 p' employee.txt ==================================================================================== === Печать строк со второй до конца файла: ==================================================================================== # sed -n '2,$ p' employee.txt ==================================================================================== === Печать каждой второй строки, начиная с первой: ==================================================================================== # sed -n '1~2 p' employee.txt ==================================================================================== === Печать строки с искомым паттерном: ==================================================================================== # sed -n '/Jane/ p' employee.txt ==================================================================================== === Печать строк, начиная с совпадающей с паттерном, заканчивая четвертой строкой содержимого файла: ==================================================================================== # sed -n '/Jason/,4 p' employee.txt ==================================================================================== === Печать строк, начиная с совпадающей с паттерном до конца файла: ==================================================================================== # sed -n '/Raj/,$ p' employee.txt