将结果打印到awk中输出文件的每两行

时间:2014-03-06 11:26:12

标签: bash awk

似乎没有人偶然发现我的问题,所以就这样了 所以设置说,我想取输入文件的每个其他行$3的第三列2nd,4th,6th etc(我知道该怎么做),然后将结果打印在输出文件中的完全相同的位置。
我的意思是$3 2nd输入行$32nd输出行的{{1}}并继续。

我想要这个,使用来自bash的awk。

2 个答案:

答案 0 :(得分:2)

以下是awk

的使用方法
awk 'FNR==NR {a[NR]=$3;next} FNR%2==0 {$3=a[FNR]}1' firstfile secondfile

这将从firstfile获取数据,并使用列secondfile和每隔一行更新$3
数据被替换为相同的位置。

cat firstfile
1 one green
2 two red
3 three blue
4 four orange
5 five yellow
6 six brown

cat secondfile
1 one jan
2 two feb
3 three mars
4 four april
5 five jun
6 six juli

运行awk命令:

1 one jan
2 two red
3 three mars
4 four orange
5 five jun
6 six brown

将数据存储回secondfile

awk 'FNR==NR {a[NR]=$3;next} FNR%2==0 {$3=a[FNR]}1' firstfile secondfile > tmp && mv tmp secondfile 

答案 1 :(得分:1)

似乎你无法解释你想要什么,所以我猜,也许你可以说出了什么问题,它将通过消除过程得到解决......

给定一个名为file的输入文件,如下所示:

Line 0,field2,field3,90
Line 1,field2,field3,80
Line 2,field2,field3,82
Line 3,field2,field3,21 
Line 4,field2,field3,85

以下awk将在其找到的相同位置打印每个其他行的field3,但没有其他内容:

awk -F, 'NR%2{print ",,"$3"\n,,";}' file

输出:

,,field3
,,
,,field3
,,
,,field3
,,