Intereting Posts
Накопительное время CPU (столбец времени в команде o / p команды ps aux) FreeBSD: удаление символических ссылок в devfs scp .lzo, а затем несжатый и удалить файл .lzo Как работает создание нового файла USB-устройства в каталоге / dev / bus / usb / 001 /? Можно ли сохранить конфигурацию рабочего стола KDE? Несколько параметров DH / ECDH в конфигурационном файле Apache 2.4.7 Почему мой Linux продолжает терпеть крах? Как изменить строку из цифры в bash? Как suid iwconfig на Debian wheezy? Увеличить размер шрифта в rxvt-unicode без редактирования ~ / .Xdefaults Как bash интерпретирует равный оператор без окружающих пространств в условном? Головоломка над судо и дорожками Gnome Terminal – кнопка для запуска команды VM «забывают» MAC-адрес шлюза на хосте Ubuntu 14.04, настроенном как шлюз, используя 1 сетевой адаптер с двумя IP-адресами в разных подсетях Отображать символы замены для свободного места в Vim

Получить все строки до даты, используя 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'