Удалите первые n строк из файла с переменной

Приведенная ниже команда работает для удаления первых трех строк:

sed -i -e 1,3d t.txt 

Поэтому я попытался подставить 3 с переменной в скрипте, как показано ниже

 NrLines=$(wc -l t.txt) sed -i -e 1,"$NrLines{d}" t.txt 

и получить следующую ошибку:

 sed: -e expression #1, char 13: unexpected `}' 

Что я делаю не так?

2 Solutions collect form web for “Удалите первые n строк из файла с переменной”

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

 NrLines=$(wc -l < t.txt) sed -i -e 1,"${NrLines}d" t.txt 

Другой способ сделать это с помощью tail (это не оптимально для больших файлов):

 NrLines=3 <<< "$(< t.txt)" tail -n +$((NrLines+1)) > t.txt 
  • Что такое sourcing мой сценарий оболочки?
  • Дифференцирование между запуском и получением источника в сценарии оболочки bash?
  • Обнаружение и удаление пустых каталогов из списка
  • Как экспортировать переменную среды из .sh-файла в zsh?
  • Как передать переменную среды скрипту?
  • разделите 1200 страниц документа на 500 страниц, а затем оставшиеся
  • Содержимое файла / proc / <PID> / cmdline зависит от скрипта shebang?
  • Bash-скрипт. Сдвиг секунд
  • Выполнение сценария из обработчика события Nagios не запускается
  • ошибка: у Macro% есть незаконное имя (% define)
  • sudo kill: операция не разрешена через SSH
  • Linux и Unix - лучшая ОС в мире.