zsh: Понимание вывода команды wc и передача ее другим командам

Я пытаюсь создать сложную команду (используя подстановки оболочки и арифметические выражения), и мне было интересно, может ли кто-нибудь помочь мне понять вывод wc команда.

Например, вот пара примеров:

[11:10:33] labreu:~ $ wc -l test.txt
5 test.txt
[11:10:40] labreu:~ $ cat test.txt| wc -l
5

Почему команда возвращает разные значения? Я пробовал посмотреть его справочную страницу, но там ничего об этом нет ...

Кстати, я спрашиваю об этом только потому, что пытался пропустить x строк файла с помощью следующей команды:

[11:25:35] labreu:~ $ tail -n "+$(( $(wc -l test.txt)-2 ))" test.txt                       
zsh: bad math expression: operator expected at `test.txt-2...'

Заметив, что wc возвращает number_of_lines filename и что использование каналов (или перенаправление дает другой результат), мне удалось получить то, что мне нужно, используя что-то вроде этого:

tail -n "+$(( $(wc -l<test.txt )-2 ))" test.txt

tail -n "+$(( $(cat test.txt | wc -l )-2 ))" test.txt 

В любом случае, остается главный вопрос: почему команда wc возвращает другой вывод при использовании в конвейере (или с перенаправлением ввода)?

Спасибо

1
задан 22 September 2021 в 11:34

0 ответов

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

Похожие вопросы: