[Comm] Значение переменной в awk
php-coder
=?iso-8859-1?q?php-coder_=CE=C1_altlinux=2Eru?=
Вт Июн 14 07:27:01 MSD 2005
Подскажите пожалуйста, как подставить значение переменной в
awk-выражение.
Есть следующая комманда:
awk '{if(NR>30&&NR<47){if($1>10){$1++;print $0}else{print $0}}else{print $0}}' Translation.m
Но мне нужно, чтобы условие в нем было не постоянным, как сейчас, а
чтобы вмечто 30 и 47 подставлялись числа.
BEGIN=`awk '/set 3/{print NR+2}' Translation.m`
END=`awk '/set 4/{print NR-2}' Translation.m`
А вот подставить не получается:
[c0der на mycomp ~]$ awk '{if(`echo -n "NR>"$BEGIN"&&NR<"$END`){if($1>10){$1++;print $0}else{print
$0}}else{print $0}}' Translation.m
awk: {if(`echo -n "NR>"$BEGIN"&&NR<"$END`){if($1>10){$1++;print
$0}else{print $0}}else{print $0}}
awk: ^ invalid char '`' in expression
[c1der на mycomp ~]$
Прошу помощи.
Если надо, то могу объяснить задачу:
есть файл формата:
$set 1
1 bla
2 bla-bla
3 bla-bla-bla
$set 2
1 blaa
2 blaa-blaa
3 blaa-blaa
Таких секций в нем много. Мне нужно в третью секцию вставить еще одну
строчку. Да так чтобы все последующие за ней увеличились на единицу.
И это нужно только в одной секции подправить. Т.е. Было:
$set 3
1 one
2 two
...
9 nine
10 ten
...
$set 4
А должно стать:
$set 3
1 one
2 two
...
9 NEW!
10 nine
11 ten
...
$set 4
Вот. Такая вот задачка :) Не хочется ради нее писать что-либо на
Перле или Питоне. Хочется в одну строчку ;) В одну строчку-то сделал,
да вот не могу теперь сделать, чтобы этим однострочником кучу файлов
обработать.
Благодарю за помощь!
--
+ php-coder
+ php-coder[at]altlinux[dot]ru
Подробная информация о списке рассылки community