Intereting Posts
Добавление переключателя клавиатуры в стойло Почему `libc6` зависит от` libgcc1`? Файлы времени и лог-файлы Почему сценарии инициализации не запускаются несколько раз? Скрипт для копирования файлов из папки и добавления md5sum в новое имя файла Movie Player требует дополнительных плагинов для декодирования этого файла (X) буфер копирования / вставки, перезаписанный Firefox автозаполнением / автозагрузкой Используйте sed, чтобы найти и заменить строку в нескольких файлах Как изменить поведение по умолчанию с двумя мониторами Fedora 14 (без клона) Запуск нескольких экземпляров XServer на одном компьютере на разных процессорных ядрах почему grub2 игнорирует опции ядра при загрузке с el torito на CD? Добавить внешнюю раскладку клавиатуры в Gnome в Debian 8 Как я рекурсивно grep через сжатые архивы? Глубокое замораживание, как программное обеспечение для Fedora Обнаружение повторения шаблонов в файле

Получить все строки до даты, используя sed, кроме последней подходящей строки

Мне нужно извлечь строки из файла, используя sed, но я не хочу, чтобы была напечатана последняя строка. Что я должен добавить в этой команде, чтобы сделать это?

sed "/$START_DATE/q" user.log>test2.log

Если это кажется более интуитивным, вы можете добавить второй sed в конвейер, единственной задачей которого является удаление последней строки (соответствует предыдущему / существующему sed )

 sed "/$START_DATE/q" user.log | sed '$d' > test2.log 

Если у вас есть GNU sed, вы можете заменить q на Q :

Q [код выхода]

 This command accepts only one address. This command is the same as q, but will not print the contents of pattern space. 

Итак, sed "/$START_DATE/Q" user.log>test2.log


В противном случае вы можете отключить печать по умолчанию и распечатать строки перед явным завершением:

 sed -n '/Line 10/q; p'