Хвост / голова вся линия, кроме X последняя / первая линия

Например у меня есть этот файл:

cat myfile
1
2
3
4
5

Я хочу напечатать все строки, кроме первых 2-х строк. вывод должен быть таким:

tail -n $(( $(wc -l myfile | awk '{print $1}') - 2 )) myfile
3
4
5

Да, это правильно. но есть проблема, у нас есть 5 строк в этом примере файла правильно? если я использую больше 5 в этой команде, вывод должен быть пустым, но это не так!!!

tail -n $ (($ (wc -l myfile | awk '{print $ 1}') - NUMBER)) myfile

этот выход должен быть пустым, но это не так

tail -n $(( $(wc -l myfile | awk '{print $1}') - 8 )) myfile

1
2
3
4
5

myfile может содержать X строк... Спасибо за помощь

2 ответа

tail -n+3 выводит последние строки, начиная с третьей.

Я знаю, что это старо, но для потомков.

учитывая ввод (как опубликовано ОП),

      cat << EOF > myfile
1
2
3
4
5
EOF

вы можете решить проблему с помощью awk

      awk 'FNR > 2 {print $1}' myfile

даст желаемый результат

      3
4
5

протестировано с версией awk (GNU Awk 4.1.4, API: 1.1 (GNU MPFR 4.0.1, GNU MP 6.1.2))

Другие вопросы по тегам