Печать и удаление первой строки файла с помощью `sed`

Я могу напечатать первую строку файла, используя

sed -n 1p file.txt 

Я могу удалить первую строку файла, используя

 sed -i 1d file.txt 

Есть ли способ печати и удаления в sed ? Вид вроде FIFO pop() или shift Perl.

  • Как извлечь 1-й, 3-й, 5-й группы из трех строк командой sed или awk?
  • Печать строк с нечетными номерами, печать строк с четными номерами
  • Получить серийный номер из Показать инвентарь
  • Как добавить текст в конец строки, содержащей несколько строк?
  • Regex для соответствия и замены шаблона в файле
  • Как преобразовать часовой пояс в журналы, поскольку они хвостают
  • Многострочная обработка текста: редактирование sshd_config
  • Как преобразовать данные с разделителями табуляции в данные с разделителями-запятыми?
  • 2 Solutions collect form web for “Печать и удаление первой строки файла с помощью `sed`”

    Вы можете использовать команду w для записи некоторых строк в другой выходной файл. В Linux и во многих других вариантах unix /dev/stdout – это стандартный вывод программы, который не там, где sed пишет с опцией -i . Если в вашей системе нет /dev/stdout или такой вариант, как /dev/fd/1 , вы можете написать именованный канал.

     sed -i -e '1 w /dev/stdout' -e '1d' file.txt 

    К сожалению, это невозможно. По сути, вы просите вывод sed из двух разных мест: вы хотите, чтобы первая строка была напечатана на stdout sed, а остальные строки были помещены обратно в файл. Но вывод sed может идти только в одном месте (по умолчанию он переходит в stdout , и если вы укажете опцию -i она вернется в файл).

    К счастью, я не вижу недостатков в работе двух команд отдельно.

    Linux и Unix - лучшая ОС в мире.