Необходимо создать несколько файлов с использованием параметризованного универсального файла и входного файла со значениями параметров с использованием сценариев оболочки - PullRequest
0 голосов
/ 13 декабря 2018

Общее содержимое файла:

SELECT @a,
@b,
from @c;

содержимое входного файла: header-> @ a, @ b, @ c, @ d

colA1,ColB1,Table1,File1
colA2,ColB2,Table2,File2
colA3,ColB3,Table3,File3

..

Конечным выводом должны быть файлы с именем файла как File1, File2 и т. Д. И должны иметь данные, как показано ниже,

FILE1 должен иметь:

SELECT ColA1,
ColB1,
from Table1;

..

FILE100:

SELECT ColA100,
ColB100,
from Table100;

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018
$ cat tst.awk
NR==FNR {
    fmt = fmt $0 ORS
    next
}
FNR==1 {
    gsub(/@[[:alpha:]]/,"%s",fmt)
    FS = ","
    $0 = $0
}
{
    printf fmt, $1, $2, $3 > $4
    close($4)
}

$ awk -f tst.awk config file

$ for f in File*; do echo "--------$f"; cat "$f"; done
--------File1
SELECT colA1,
ColB1,
from Table1;
--------File2
SELECT colA2,
ColB2,
from Table2;
--------File3
SELECT colA3,
ColB3,
from Table3;
0 голосов
/ 13 декабря 2018

РЕДАКТИРОВАТЬ: Так как OP говорит, что для чтения значений полей из универсального файла, здесь может помочь следующее.

Допустим, следующее является универсальным файлом следующим образом:

cat generic
SELECT 1,
2,
from 3;

Запустите следующий код.

awk -v s1=",\n"  '
FNR==NR{
  sub(/,$/,"")
  a[FNR]=$NF
  next
}
{
  close(file)
  print "SELECT " $a[1] s1 $a[2] s1 "from " $a[3]";" > ($NF)
  file=$NF
}'  generic FS=","  Input_file

Вывод будет File1, File2 и т. Д.



Не могли бы вы попробоватьследующий.Он создаст выходные файлы с именами, такими как File1, File2 и т. Д.

awk -v s1=",\n"  -F, '{close(file);print "SELECT " $1 s1 $2 s1 "from " $3";" > ($NF);file=$NF}' Input_file

Добавление здесь формы решения не с одним вкладышем.

awk -v s1=",\n"  -F, '
{
  close(file)
  print "SELECT " $1 s1 $2 s1 "from " $3";" > ($NF)
  file=$NF
}'  Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...