LINUX.ORG.RU

Awk - переменная в rule

 ,


0

1

Есть такой код:

    BLOCK=`awk '
/\/\* R \*\// {
  level=1
  count=0
}
...
Работает, все дела. Хочу избавиться от захардкоженной строки:
RECORDSEQ="/* R */"

    BLOCK=`awk -v rec="$RECORDSEQ" '
rec {
  level=1
  count=0
}

Не работает.

RECORDSEQ="/* R */"

    BLOCK=`awk -v rec="$RECORDSEQ" '
$0 ~ rec {
  level=1
  count=0
}

И так тоже.

RECORDSEQ="/\/\* R \*\//"

    BLOCK=`awk -v rec="$RECORDSEQ" '
$0 ~ rec {
  level=1
  count=0
}

И так.

Как исправить? awk жрет ввод с файла.

★★

В проверке ″$0 ~ rec″, зачем заносить в rec в начале и в конце слеши (/), это же признак константного регекспа, а не сам регексп.

mky ★★★★★
()
Ответ на: комментарий от yoghurt

Я потом эту переменную дальше обрабатываю.

sambist ★★
() автор топика
Ответ на: комментарий от mky

Это не слеши начала\конца, это выражение такое - /* R */. Ну как комментарий в си.

sambist ★★
() автор топика
Ответ на: комментарий от yoghurt
vault [sh os.sh < os.txt] /tmp                                 14-10-31 10:59AM
vault% cat os.txt 
Linux
BSD
Windows
Mac OS
BeOS
vault [cat os.txt] /tmp                                        14-10-31 11:00AM
vault% cat os.sh 
RECORDSEQ="OS"
awk -v re="$RECORDSEQ" '$0 ~ re'
vault [cat os.sh] /tmp                                         14-10-31 11:00AM
vault% sh os.sh < os.txt 
Mac OS
BeOS

Или я не понял, что тебе надо

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Ничего не менял, просто запустил заново. Заработало Т_Т. Спасибо.

sambist ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.