Попробуйте хвост :
tail -n +2 "$FILE"
-n x
: Просто распечатайте последнее x
строки. tail -n 5
дал бы Вам последние 5 строк входа. +
вид знака инвертирования аргумент и делают tail
печать что-либо кроме первого x-1
строки. tail -n +1
распечатал бы целый файл, tail -n +2
все кроме первой строки, и т.д.
, GNU tail
намного быстрее, чем [1 112]. tail
также доступно на BSD и эти -n +2
, флаг последователен через оба инструмента. Проверьте FreeBSD или OS X страницы справочника для больше.
версия BSD может быть намного медленнее, чем [1 115], все же. Интересно, как они управляли этим; tail
должен просто считать файл линию за линией, в то время как sed
делает довольно сложное операционное вовлечение, интерпретирующее сценарий, применяя регулярные выражения и т.п..
Примечание: можно испытать желание использовать
# THIS WILL GIVE YOU AN EMPTY FILE!
tail -n +2 "$FILE" > "$FILE"
, но это даст Вам пустой файл . Причина состоит в том, что перенаправление (>
) происходит, прежде tail
вызывается оболочкой:
$FILE
tail
процесс к [1 123] tail
чтения от теперь пустой $FILE
, Если Вы хотите удалить первую строку в файле, необходимо использовать:
tail -n +2 "$FILE" > "$FILE.tmp" && mv "$FILE.tmp" "$FILE"
Эти &&
удостоверится, что файл не становится перезаписанным, когда существует проблема.
Вы можете использовать переменную оболочки $?
, например:
$ true ; echo $?
0
$ false ; echo $?
1