我的源文件:
0.txt:
anything1
anything2
anything3
anything4
1.txt如下:
house();
shop("");
house();
shop("");
house();
shop("");
使用时:
awk
'FNR==1 {++f}
f==1 {a[i++]=$0}
f==2 {if ($0~/house/) {gsub(/house/, a[int(j++/2)%2]) }; print > "a.txt"}
'
0.txt 1.txt
所以a.txt:
anything1();
shop("");
anything1();
shop("");
anything2();
shop("");
但我想先将内容传递给variable
,然后使用该variable
使用system()
:在a.txt
上进行写入
awk -v myvar=''
'FNR==1 {++f}
f==1 {a[i++]=$0}
f==2 {if ($0~/house/) {gsub(/house/, a[int(j++/2)%2]) }; print > $myvar; system("touch $myvar a.txt")}
'
0.txt 1.txt
此打印名为anything1();
、anything2();
、anything1();
的文件。。
但打印a.txt
为空。
可以将f==2
(FNR==1 {++f}
中正在处理的当前文件(的输出捕获到myvar
变量,然后传递到system()
?
awk 'FNR==1 {++f; if(f>2) print ""}
f==1 {a[NR]=$0; next}
f==2 && FNR%2 {sub(/()/,"(" a[int(FNR/2)+1] ")"); print}
f==3 && !(FNR%2) {sub(/("")/,"("" a[FNR/2+1] "")"); print}' file1 file2 file3
house(anything1);
house(anything2);
house(anything3);
shop("anything2");
shop("anything3");
shop("anything4");