Ось як це зробити з awk:
awk 'NR>2 {print t} {t=$0}'
Також інший спосіб sed:
sed '1d;x' file.txt
x- це розширена sedкоманда, вона перемикає поточний рядок з попереднім: поточний переходить у буфер, а попередній переходить на екран і так далі, sedобробляючи потік рядок за рядком (саме тому перший рядок буде порожнім).
awkрішення на кожному кроці (рядку) вводить поточну лінію в змінну і починає друкувати її лише після проходження другого рядка. Таким чином, ми отримали shitfed послідовність рядків на екрані від другого до останнього, але одного. Останній рядок опущений, оскільки рядок знаходиться в змінній і повинен бути надрукований лише на наступному кроці, але всі кроки вже закінчені, і ми ніколи не бачимо рядка на екрані.
Ця ж ідея в perl:
perl -ne 'print $t if $.>2 ; $t=$_' file.txt
$.означає номер рядка та $_ поточний рядок.
perl -nце ярлик для while(<..>) {..}структури та -eпризначений для вбудованого сценарію.
head -n -1видаляє перший І останній рядок мого.txtфайлу на Ubuntu 14.04.2LTS.