Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества? Помогите нам с документацией!
0 Пользователей и 1 Гость просматривают эту тему.
sed 'N,$s/^/#/' file
т.е. пропускать уже закоменченые строки?
Каким образом реализовать второе, т.е. пропускать уже закоменченые строки?
sed -i 's/##/#/' file.txt --заменить каждое первое "##" в каждой строке файла на "#"
sed 'N,$s/##/#/' file
А великий смысл ? Они всё равно останутся закоменчеными.
sed 'N,$s/^/#/' filesed: -e expression #1, char 2: extra characters after command
sed '/N/,$ s/^#*/#/' file
Но тут больше вопрос можно ли оба условия выполнить одной командой.
sed -e '1,$ s/^/#/' -e '1,$ s/##/#/' file.txt > 123
sed -i -e '1,$ s/^/#/' -e '1,$ s/##/#/' file.txt > 123
N,$s
$ echo -e "string1\nstring2\nstring3\nstring4" | sed '3,$s/^/#/'string1string2#string3#string4
$ sed '/2/,$ s/^#*/#/' filestring1#string2#string3#string4
$ sed '/2/,$ s/^#*/#/' 1.shasdasdasdasdasdasdasdasdasd
Ушел вкуривать.
#Немного о потоковом редактор SED. Несколько примеров.Редактор SED применяется для редактирования файлов при помощи скриптовsed -n '1,100p linux.txt > 100.txt --вывести строки с 1 по 100 из файла linux.txt в файл 100.txtsed -n -e '1,50p' -e '1000,1100p' linux.txt > 123.txt --вывести строки с 1 по 50 и с 1000 по 1100 из файла linux.txt в файл 100.txtsed -n '112~10p' linux.txt > 112.txt --вывести каждую 10-ю строчку начиная с 112 строки в 112.txtsed -n '/^#/p' linux.txt --вывести все строки начинающиеся с "#"sed -n '/^# /p' linux.txt --вывести все строки начинающиеся с "# "sed -i 's/OS/linux/' file.txt --заменить каждое первое слово "OS" в каждой строке файла file.txt и заменить на слово "linux"sed -i 's/OS/linux/g' file.txt --заменить каждое слово "OS" файла file.txt и заменить на слово "linux". Оперант "g" в конце шаблона включает глобальный поискsed -i 's/OS/linux/gI' file.txt --оперант "I" включает не чувствительность к регистру. Слово "OS", "os", "Os" и "oS" будут заменены на на слово "linux".sed -i 's|/etc/fstab|/linux/linux|g' linux.txt --чтобы заменить /etc/fstab на /linux/linux нужно использовать разделитель "|" вместо "/"sed -i '100 s/linux/OS/' linux.txt --заменить слово "linux" на слово "OS" в строке номер 100sed -i '100-200 s/linux/OS/' linux.txt --заменить слово "linux" на слово "OS" в диапазоне строкsed -i '/linux/a новая строка с текстом после найденного слова linux' linux.txt --добавления новой строки после каждого найденного совпаденияsed -i '/linux/i новая строка с текстом перед найденным словом linux' linux.txt --добавления новой строки перед каждым совпадениемsed -i.bak 's|/etc/fstab|/linux/linux|g' linux.txt --при выполнении команды sed будет создан резервный файл исходного с добавлением расширения baksed '/^00000/ i дополнительная строка'g linux.txt > 11111.txt --добавить строчку "дополнительная строка" после каждой строки начинающейся с "00000" и сохранить результат в файл 11111.txtsed -i '$ a new line' linux.txt --добавить строку "new line" конец файлаsed -i '3 a new line' linux.txt --добавить строку "new line" после третьей строкиsed '3,5 r file.txt' linux.txt --добавить содержимое файла file.txt в файл linux.txt после 3 и 5 строкsed -i '0,/LINUX/ i /111111111/' linux.txt --добавить строчку "1111111111" перед первой строчкой содержащей слово "LINUX"sed -i '0,/LINUX/ a /111111111/' linux.txt --добавить строчку "1111111111" после первой строчки содержащей слово "LINUX"Оперант -i вносит изменения непосредственно в исходный файл, если его не указывать то нужно задать вывод в новый файл с помощью ">"sed -i 10d linux.txt --удаление 10-ой строки в файле linux.txtsed -i $d linux.txt --удалить последнею строку в файлеsed -i '10-30d' linux.txt --удаление диапазона строкsed -i '10-30!d' linux.txt --удалить все строки кроме диапазона. Оперант "!" задает отрицание (инвентирование)sed -i "10,$d" linux.txt --удалить строки с 10-ой до последней включительноsed -i '/qwerty/d' linux.txt --удалить строки содержащие определенной словоsed '/^$/d' linux.txt --удалить пустые строкиsed -i '0,/LINUX/{/LINUX/d;}' linux.txt --удаление только первой найденной строки содержащей слово "LINUX"sed -i '2,/LINUX/{/LINUX/d;}' linux.txt --удаление только второй найденной строки содержащей слово "LINUX"sed -i G linux.txt --добавить пустые строчки после каждой не пустойsed -i '10,$ s/^/#/' linux.txt --закомментировать все строки начиная с 10-й строкиsed -i -e 's/linux/LINUX/gI' -e 's/Window/door/gI' linux.txt --выполнение сразу двух команд в одной строке. Оперант "-e" начинает выполнение второй команды[code]
Что то не очень понято что должно произойти. Выполняется но файл вроде и не меняется.
Почему тут не работает?
sed '/ТУТ ПИШЕМ СТРОКУ С СОВПАДЕНИЕМ/,$ s/^#*/#/' 1.sh
Там двойки нет
Страница сгенерирована за 0.031 секунд. Запросов: 21.