需要使用参数化的通用文件创建多个文件,并使用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}”为解决方案输入了大量信息。这完全符合我的要求。