我需要使用file1
命令将某些固定值以及其他文件file2
和awk
中的值打印到新文件输出中。
100,1
102,3
104,4
103,4
108,6
109,7
我在粘贴命令的帮助下做了: 在file1中:前4个字段存在 在file3中:file1和file2之间的内容 使用paste命令合并所有文件。我想直接这样做而不使用粘贴命令 awk -F' {print" 100",0,1,contents_of_file1," 1"," 0",contents_of_file2}' >输出
100,0,1,100,1,1,0,103,4
100,0,1,102,3,1,0,108,6
100,0,1,104,4,1,0,109,7
前3个值默认固定,第4和第5列值来自file1,6和第7列值是固定的默认值,后2列是file2的内容
答案 0 :(得分: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
。 next
会跳过任何进一步的陈述。
对于第二个文件,将跳过第一个块,因为NR
不再等于FNR
。使用与第一个文件中相同记录对应的数组中的值,以及当前记录的固定值和内容$0
。输出中的每个字段由OFS
分隔,paste -d, file1 file2 | awk -F, -v OFS=, '{print "100,0,1",$1,$2,"1,0",$3,$4}'
已设置为逗号。
或者,您可以使用粘贴同时输入两个文件的内容:
paths: {
'angular': requirejs.cardBaseLibBaseUrl + 'angular/angular',
'angular-route': requirejs.cardBaseLibBaseUrl + 'angular-route/angular-route',
// other things
'ngDraggable': requirejs.cardBaseLibBaseUrl + 'ngDraggable-master/ngDraggable'
},
shim: {
'angular' : {
deps: ['jquery'],
'exports' : 'angular'
},
'angular-route': ['angular'],
// other things
'ngDraggable' : {
deps: ['angular']
}