Chinaunix

标题: 怎么将文件b的每行合并到文件a的指定行 [打印本页]

作者: jin978347005    时间: 2017-06-08 11:19
标题: 怎么将文件b的每行合并到文件a的指定行
文件a:
jjjjj
97737
kkkkk
7377348
hhhhh

文件b:
123
456
789

合并后的文件c应该是:
jjjjj123
97737
kkkkk456
7377348
hhhhh789

最好使用linux命令,谢谢

作者: jason680    时间: 2017-06-08 11:24
回复 1# jin978347005

...合并到文件a的指定行 ??

作者: haooooaaa    时间: 2017-06-08 11:33
  1. awk 'NR==FNR{a[NR]=$0;next}FNR%2{$0=$0 a[++i]}1' b a
  2. jjjjj123
  3. 97737
  4. kkkkk456
  5. 7377348
  6. hhhhh789
复制代码

作者: jin978347005    时间: 2017-06-08 12:41
回复 2# jason680

谢谢,下面有举例
作者: jin978347005    时间: 2017-06-08 12:42
回复 3# haooooaaa

非常感谢
作者: jin978347005    时间: 2017-06-08 13:16
回复 3# haooooaaa

不好意思,新手一枚,那如果是文件a:
jjjjj
97737
kkkkk
7377348
hhhhh

文件b:
123
456


合并后文件c应该是:
jjjjj123
97737
kkkkk
7377348
hhhhh456

也就是文件b的每行顺序加到文件a的第1,5,9,13,17等行(从第一行开始隔4行),谢谢。

作者: haooooaaa    时间: 2017-06-08 13:25
回复 6# jin978347005

  1. awk 'NR==FNR{a[NR]=$0;next}FNR%4==1{$0=$0 a[++i]}1' b a
复制代码


作者: jin978347005    时间: 2017-06-08 16:06
回复 7# haooooaaa

非常感谢


作者: jin978347005    时间: 2017-06-11 15:54
回复 7# haooooaaa
我对你这段代码的理解是先把b文件的每一行存到数组a中,在读文件a时,如果文件a的行数整除4余数是1,则将文件a的这一行和相应的数组a进行合并,所以如果我想在它们合并时加个冒号就是awk 'NR==FNR{a[NR]=$0; next}FNR%4==1{$0=$0 ":" a[++i]}1'  但是如果我只想输出相应的数组a也就是将文件b的行替换文件a相应的行,我的代码是awk 'NR==FNR{a[NR]=$0; next}FNR%4==1{a[++i]}1' 却不成功,仍然输出的是文件a本身。是不是我对你的代码理解有误?
不胜感谢!



作者: jin978347005    时间: 2017-06-11 16:04
回复 9# jin978347005 我知道了,应该是awk 'NR==FNR{a[NR]=$0; next}FNR%4==1{$0=a[++i]}1'





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2