Передача значения 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'


Который должен быть повторно использован несколько раз !



Спасибо за ответы .

714   3  

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 является способом пойти.

awk -v var1=15 -v var2=25 'NR>=var1 && NR<=var2 {blah blah ...}'
Конечно, вы должны изменить 15 и 25 на то, что вам нужно. Обратите внимание, что переменные не должны инкапсулироваться в кавычки.

Comments

    Ничего не найдено.