Удалить все строки в файле, идущие после заданной
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 45
Удалить все строки в файле, идущие после заданной
Нужно удалить все строчки, после заданной (по номеру строки или ее содержанию) sed '/содержание_строки/q' - не работает. Как правильно сделать?
-
- Администратор
- Сообщения: 5405
- ОС: Gentoo
Re: Удалить все строки в файле, идущие после заданной
Ваш вариант выведет на стандартный вывод все строки, идущие до заданной, не включая её.
Если это и есть то, что вам нужно, то должно работать, а если не работает, приведите подробности.
Если вам нужно вывести и указанную строку тоже, можете заменить "q" на "{p;q}".
Если вам нужно вывести их обратно в файл, а не в stdout, укажите опцию "-i".
А вообще, вместо "не работает" следует описывать, какого результата ожидали и какой получили.
Спасибо сказали:
-
- Сообщения: 45
Re: Удалить все строки в файле, идущие после заданной
#!/bin/bash
declare -i c=0
while true
do
sed '/done/,$d' /etc/init.d/generator
c=$(( c + 1 ))
echo "$c" >> /etc/init.d/generator
sleep 5
done
Ожидал удаления строк, создаваемых после done.
-
- Администратор
- Сообщения: 5405
- ОС: Gentoo
Re: Удалить все строки в файле, идущие после заданной
Вы не написали, чем отличается результат от ожидания, и мне опять приходится гадать. Вы ожидали, что они удаляться _прямо в файле_, а вместо этого результат удаления _вывелся в терминал_, а файл остался неизменным? Тогда, как я написал выше, вам нужна опция "-i". Нужно, чтобы сама строка done не удалялась? Это я тоже написал выше. Нужно что-то другое? Тогда по-прежнему непонятно, что именно.
-
- Модератор
- Сообщения: 21258
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Удалить все строки в файле, идущие после заданной
По номеру - очень просто: head -n <number> <file>
По содержимому - чуть сложнее, например так: grep -B 1000 <regexp> (вместо 1000 подставить число, заведомо превышающее число строк в файле)
По содержимому - чуть сложнее, например так: grep -B 1000 <regexp> (вместо 1000 подставить число, заведомо превышающее число строк в файле)
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 45
Re: Удалить все строки в файле, идущие после заданной
/dev/random писал(а): ↑27.01.2013 23:33
Вы не написали, чем отличается результат от ожидания, и мне опять приходится гадать. Вы ожидали, что они удаляться _прямо в файле_, а вместо этого результат удаления _вывелся в терминал_, а файл остался неизменным? Тогда, как я написал выше, вам нужна опция "-i". Нужно, чтобы сама строка done не удалялась? Это я тоже написал выше. Нужно что-то другое? Тогда по-прежнему непонятно, что именно.
Все, я вас понял. Ключ -i это то что мне было нужно. Спасибо