Передача значения NR переменной в AWK
Можем ли мы передать NR переменной в awk?
У меня есть сценарий, который выглядит так:
awk -v { blah blah..
..........
count--
print count
}
if (count==0)
{print "The end of function"
print NR
exit
}
Это часть кода awk . Я хочу передать NR в var2 как:
sed -n ''"$var1"','"$var2"'p'
Который должен быть повторно использован несколько раз !
Спасибо за ответы .
3 ответов:
Как и предполагали другие, существуют лучшие способы достижения общей цели.
Однако, чтобы ответить на ваш конкретный вопрос:
var2=$(awk 'END {print NR}' inputfile)И добавьте все, что вам может понадобиться в скрипте AWK.
Я не знаю, чего вы хотите достичь с помощью
awk,sedи переменнаяNR. Вы имеете в виду количество строк в файле?Эта команда получает его:
wc -l infile | sed -e 's/ .*$//'Итак, используйте его с
-vпереключитесь наawkи используйте его по своему усмотрению. Следующая команда выведет10, потому чтоinfileимеет десять строк в моем компьютере.awk -v num_lines=$(wc -l infile | sed -e 's/ .*$//') 'BEGIN { print num_lines }'
Если вы хотите напечатать только определенное подмножество строк, вы почти на месте. Флаг-V является способом пойти.
Конечно, вы должны изменить 15 и 25 на то, что вам нужно. Обратите внимание, что переменные не должны инкапсулироваться в кавычки.awk -v var1=15 -v var2=25 'NR>=var1 && NR<=var2 {blah blah ...}'
Comments