Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 用awk替换特定行的多列_Unix_Replace_Awk - Fatal编程技术网

Unix 用awk替换特定行的多列

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

我想用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和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