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