我有两个文件:
f1.txt:
header 1
header 2
100
100
100
100
100
100
100
100
100
100
100
100
100
f2.txt:
header 1
header 2
10
1234
5678
10
10
2345
6789
10
10
3456
7890
10
10
期望的输出
f3.txt:
header 1
header 2
100
1234
5678
100
100
2345
6789
100
100
3456
7890
100
100
第4行和第4行中出现的f2.txt中的值5,然后8& 9,然后12& 13(即,它们每隔6行间隔一次),我想将它们放在f1.txt中以替换f1.txt中的相应行。我怎么能这样做?
到目前为止,我只能从f2.txt中打印出这些值:
exec<f2.txt
var=$(awk 'NR % 6 == 4')
echo "$var"
这会产生
1234
2345
3456
然后当我改变4到5时,它给了我第二组值。所以我试图学习如何提取2组值,然后将它们放在f1.txt中?任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
尝试:
paste f1.txt f2.txt | awk -F'\t' '
NR < 3 || (NR-2)%4 == 1 || (NR-2)%4 == 0 {print $1; next}
{print $2}
'
您想要的输出不表示6行的组,而是4行的组。也许2个标题行会让你失望。
我假设您的输入文件不包含标签。
来自Ed Morton的更简洁的awk:awk -F'\t' '{print (NR-2)%4 < 2 ? $1 : $2}'