вложенные блоки BEGIN-END в awk - PullRequest
       5

вложенные блоки BEGIN-END в awk

1 голос
/ 28 февраля 2011
awk 'BEGIN {print FILE}
{printf "Part\t\tStart\t\tEnd"
printf "%s %-6s %-6d",Part1,1,$end1
printf "%s %-6d %-6d",Part2,$start2,$end2}
END {printf "total records:%d", $tot}' >meta.txt

Это мой код, и он не работает. Это часть сценария оболочки, все переменные вычисляются в другой части сценария. Мои I / P-файлы - это таблицы, и я должен выяснить, нет. записей в них и отображать результаты в файле в виде таблицы типа

File   Start  End
File1  1      205
file2  206    417

и т. Д.

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Если это переменные оболочки, вам нужно передать их в скрипт AWK:

awk -v "start2=$start2" -v "end1=$end1" -v "end2=$end2" -v "tot=$tot" 'BEGIN {print FILE}
    {printf "Part\t\tStart\t\tEnd"
    printf "%s %-6s %-6d", Part1, 1, end1
    printf "%s %-6d %-6d", Part2, start2, end2}
    END {printf "total records:%d", tot}' >meta.txt
1 голос
/ 28 февраля 2011

В awk есть только один блок BEGIN и END.Я на самом деле не очень понимаю, что вы пытаетесь сделать.Поэтому я ожидаю, что вы покажете больше примеров.однако, чтобы создать таблицу файлов в awk, вы можете сделать это в блоке BEGIN

awk 'BEGIN{
  print "field1\tfield2\n"
  ...
  print "one\ttwo"
  ...
}' > outputfile.txt

, если у вас есть входной файл для обработки, и содержимое таблицы происходит из этого входного файла

awk 'BEGIN{
  print "field1\tfield2\n"
}
{
  ...
  print "one\ttwo"
  ...
}END{
  print "so some final stuff here"
}' inputfile > outputfile.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...