Отрицательные аргументы в голову - PullRequest
1 голос
/ 21 февраля 2020

Я пытался с помощью команды head, в macOS с помощью zsh, код ниже,

a.txt:

1
2
3
4
5
6
7
8
9
10

tail -n +5 a.txt   // line 5 to line end

tail -n -5 a.txt   // last line 5 to line end

head -n +5 a.txt // line 1 to line 5

head -n -5 a.txt  // # What did this do?

Последняя команда показывает ошибку.

head: illegal line count -- -5

Что с головой -n -5 на самом деле?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

Некоторые реализации из head, такие как GNU head, поддерживают отрицательные аргументы для -n

Но это не стандартно! Ваш случай явно не поддерживается.

Если поддерживается Отрицательный аргумент должен удалить последний 5 lines перед выполнением head

0 голосов
/ 21 февраля 2020

Становится понятнее, если использовать 3 вместо 5. Обратите внимание на знаки!

# print 10 lines:
seq 10

1
2
3
4
5
6
7
8
9
10

#-------------------------    
# get the last 3 lines:
seq 10 | tail -n 3

8
9
10

#--------------------------------------
# start at line 3 (skip first 2 lines)
seq 10 | tail -n +3

3
4
5
6
7
8
9
10

#-------------------------    
# get the first 3 lines:
seq 10 | head -n 3

1
2
3

#-------------------------    
# skip the last 3 lines:
seq 10 | head -n -3

1
2
3
4
5
6
7

кстати, man tail и man head объясняют это поведение.

...