Unix 用awk替换特定行的多列
我想用b.com的第6、7和第8列替换a.com的第3、4和5列,用于特定的行Unix 用awk替换特定行的多列,unix,replace,awk,Unix,Replace,Awk,我想用b.com的第6、7和第8列替换a.com的第3、4和5列,用于特定的行 awk 'NR==FNR{a[NR]=$6;next}FNR>5&&FNR<5287{$3=a[FNR]}1' b.com a.com b、 com: a d e f k 3 4 5 l p q w e g 5 4 3 m 期望输出: a b 3 4 5 4 c d 5 4 3 4 我会先用,然后用awk paste a.com b.com > c.com 此命令将a.com
awk 'NR==FNR{a[NR]=$6;next}FNR>5&&FNR<5287{$3=a[FNR]}1' b.com a.com
b、 com:
a d e f k 3 4 5 l
p q w e g 5 4 3 m
期望输出:
a b 3 4 5 4
c d 5 4 3 4
我会先用,然后用awk
paste a.com b.com > c.com
此命令将a.com和b.com作为相邻列放入新文件中
然后是awk部分
awk '{print $3,$4,$5,$10,$11,$12}' c.com
(你必须根据a.com中实际有多少列来清理它
一声令下
paste a.com b.com | awk '{print $3,$4,$5,$10,$11,$12}'
编辑:如果OP只需要特定的行(行),这可能不起作用
你能提供一些输入和输出示例吗?
paste a.com b.com | awk '{print $3,$4,$5,$10,$11,$12}'
awk 'NR==FNR {fld6[NR]=$6; fld7[NR]=$7; fld8[NR]=$8; next}
FNR>5 && FNR<5287 {$3=fld6[FNR]; $4=fld7[FNR]; $5=fld8[FNR]}1' b.com a.com
$ cat a.com
a b 1 2 3 4
c d 3 2 1 4
$ cat b.com
a d e f k 3 4 5 l
p q w e g 5 4 3 m
$ awk 'NR==FNR {fld6[NR]=$6; fld7[NR]=$7; fld8[NR]=$8; next}
{$3=fld6[FNR]; $4=fld7[FNR]; $5=fld8[FNR]}1' b.com a.com
a b 3 4 5 4
c d 5 4 3 4