Как ввести математические выражения внутри команды "sed"? - PullRequest
0 голосов
/ 24 декабря 2018

учитывая список чисел, я бы хотел, чтобы через команду "sed" отображались только строки в диапазоне от 2 до переменной, из которой вычитается 1.Как я могу вычесть 1 в переменную внутри выражения?Я не хотел бы решения, которые создают другую переменную перед командой.

echo -e "1\n2\n3\n4\n5\n6\n7\n" | sed -n "3,+$var p"

это показывает 3-4-5-6, если $ var = 3.Но если бы я хотел напечатать до 5 (3-4-5), мне пришлось бы вычесть 1 из переменной ($ var-1).

Я хотел бы вставить способ ($ var -1)

1 Ответ

0 голосов
/ 24 декабря 2018

Вы можете использовать $((...)) в оболочке для арифметической оценки:

echo -e "1\n2\n3\n4\n5\n6\n7\n" | sed -n "3,+$((var-1)) p"

3
4
5

Я предлагаю использовать printf, так как он более переносим:

printf '%s\n' {1..7} | sed -n "3,+$((var-1)) p"

В bash вы можете использовать here-string и избегать конвейера:

sed -n "3,+$((var-1)) p" <<< $'1\n2\n3\n4\n5\n6\n7\n'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...