Shell 使用awk打印值

Shell 使用awk打印值,shell,awk,Shell,Awk,我需要使用awk命令将某些固定值以及其他文件、file1和file2中的值打印到新文件输出中 文件1: 100,1 102,3 104,4 文件2: 103,4 108,6 109,7 我的命令 我是在粘贴命令的帮助下完成的: 在文件1中:出现前4个字段 在文件3中:文件1和文件2之间的内容 使用“粘贴”命令合并所有文件。我想不使用粘贴命令直接执行它 awk-F'{print“100”,0,1,_文件的内容1,“1”,“0”,_文件的内容2}'>输出 输出: 100,0,1100,1,1,0

我需要使用
awk
命令将某些固定值以及其他文件、
file1
file2
中的值打印到新文件输出中

文件1:
100,1
102,3
104,4
文件2:
103,4
108,6
109,7
我的命令 我是在粘贴命令的帮助下完成的: 在文件1中:出现前4个字段 在文件3中:文件1和文件2之间的内容 使用“粘贴”命令合并所有文件。我想不使用粘贴命令直接执行它 awk-F'{print“100”,0,1,_文件的内容1,“1”,“0”,_文件的内容2}'>输出

输出:
100,0,1100,1,1,0103,4
100,0,1,102,3,1,0,108,6
100,0,1,104,4,1,0,109,7

前3列值是默认固定值,第4列和第5列值来自文件1,第6列和第7列值是固定默认值,最后2列是文件2的内容。通过将第一个文件的内容保存到缓冲区,可以在一次调用awk中完成全部工作:

awk -v OFS=, 'NR==FNR{a[NR]=$0;next}{print "100,0,1",a[FNR],"1,0",$0}' file1 file2
第一个块上的
NR==FNR
条件意味着它只对第一个文件运行,其中总记录数等于当前文件的记录数。第一个文件中的每一行都保存到数组
a
,使用记录编号作为索引<代码>下一步跳过任何进一步的语句

对于第二个文件,跳过第一个块,因为
NR
不再等于
FNR
。将使用与第一个文件中相同记录对应的数组中的值,以及固定值和当前记录的内容,
$0
。输出中的每个字段由设置为逗号的OFS
分隔

或者,您可以使用“粘贴”同时输入两个文件的内容:

paste -d, file1 file2 | awk -F, -v OFS=, '{print "100,0,1",$1,$2,"1,0",$3,$4}'

我需要做的X不是一个好问题。你应该解释一下你想做什么,你尝试过什么,以及你的困境。有关更多信息,请参阅。请参阅“编辑”以查看我有哪些更好的选择,但不清楚输出中的所有字段来自何处。你应该编辑以显示给我们。上面编辑的输出部分你能解释第一个答案吗?