[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