需要使用参数化的通用文件创建多个文件,并使用shell脚本创建带有参数值的输入文件

需要使用参数化的通用文件创建多个文件,并使用shell脚本创建带有参数值的输入文件,shell,awk,sed,Shell,Awk,Sed,通用文件内容: SELECT @a, @b, from @c; 输入文件内容: 标题->@a、@b、@c、@d colA1,ColB1,Table1,File1 colA2,ColB2,Table2,File2 colA3,ColB3,Table3,File3 。 最终输出应该是文件名为File1、File2等的文件。。它应该有如下数据: 文件1应具有: SELECT ColA1, ColB1, from Table1; 。 文件100: SELECT ColA100, ColB100

通用文件内容:

SELECT @a,
@b,
from @c;
输入文件内容: 标题->@a、@b、@c、@d

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

最终输出应该是文件名为File1、File2等的文件。。它应该有如下数据:

文件1应具有:

SELECT ColA1,
ColB1,
from Table1;

文件100:

SELECT ColA100,
ColB100,
from Table100;
编辑:因为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

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


你能试试下面的吗。它将创建名为
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

欢迎来到堆栈溢出!对不起,这不是StackOverflow的工作方式。形式为“我想做X,请给我提示和/或示例代码”的问题被认为是离题的。请访问并阅读,特别是阅读上面的建议,我们正在使用通用文件的内容作为打印块的一部分,但我的要求是从通用文件中读取内容,因为它可能会更改。@Wasif,不清楚的代码是按照您显示的示例编写的。如果它不是为您提供正确答案的那个,那么请在您的输入和预期输出的帖子中添加示例,然后让我们知道。感谢前面提供的解决方案。如果通用文件的内容是固定的,那么代码可以正常工作,这样我们就可以相应地编写打印块。但我正在寻找一种解决方案,我们从通用文件中读取文件内容,并用输入文件中的参数值替换参数,而不是手动写入打印块。@Wasif,您能为您的语句提供一次示例吗?我不清楚。我也尝试过使用这个脚本,它的工作原理与您的解决方案类似。awk'BEGIN{FS=“,”}{print“SEL”$1“,\n“$2”,\n from“$3>$4}”为解决方案输入了大量信息。这完全符合我的要求。