首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一个文本文件中插入每(n*5)行-th行,并插入另一个文本文件中的第n行

在一个文本文件中插入每(n*5)行-th行,并插入另一个文本文件中的第n行
EN

Stack Overflow用户
提问于 2013-06-22 01:34:25
回答 3查看 228关注 0票数 2

我想用来自file2 (n=0..m)的第n行的内容在file1中插入每个(n*5)-th行。示例: file1

代码语言:javascript
运行
复制
1: blabla1
2: blabla2
3: ddddd
4: sddddd
5: ffffff
6: hhhhh
...

file2

代码语言:javascript
运行
复制
1: name1
2: name2
3: name3
...

结果

代码语言:javascript
运行
复制
1: name1
2: blabla1
3: blabla2
4: ddddd
5: sddddd
6: ffffff
7: name2
8: hhhhh
...

有没有什么"sed“或"awk”这样做的方法?

EN

回答 3

Stack Overflow用户

发布于 2013-06-22 04:47:34

这可能适用于您(GNU sed):

代码语言:javascript
运行
复制
sed -re ':a;Rfile1' -e 'x;s/^/./;/.{5}/!{x;ba};s/.*//;x' file2

或者:

代码语言:javascript
运行
复制
sed -e '1~5{h;Rfile2' -e 'd};2~5{x;p;x}' file1

但是,我注意到第二种解决方案可能存在文件结束问题。

票数 2
EN

Stack Overflow用户

发布于 2013-06-22 02:16:55

这样如何:

代码语言:javascript
运行
复制
awk '
NR==FNR{a[NR]=$2;next}
{print ++x": "$2;while(++i%5){print ++x": "a[i]};print ++x": "a[i]}' file1 file2

输出:

代码语言:javascript
运行
复制
1: name1
2: blabla1
3: blabla2
4: ddddd
5: sddddd
6: ffffff
7: name2
8: hhhhh
票数 1
EN

Stack Overflow用户

发布于 2013-06-22 04:20:04

bash解决方案。我在file1中添加了几行代码以实现效果

代码语言:javascript
运行
复制
exec 4<file1
while IFS= read -r line; do
    echo "$line"
    for i in {1..5}; do
        IFS= read -r line <&4 || break
        echo "$line"
    done
done < file2 | cat -n
exec 4<&-
代码语言:javascript
运行
复制
 1  name1
 2  blabla1
 3  blabla2
 4  ddddd
 5  sddddd
 6  ffffff
 7  name2
 8  hhhhh
 9  gggg
10  iiii
11  jjjj
12  kkkk
13  name3
14  llll

这将产生相同的输出:

代码语言:javascript
运行
复制
awk 'NR%5 == 1 {getline f2 < "file2"; print f2} 1' file1 | cat -n

显然,通过管道连接到cat -n并不是解决方案的一部分,只是为了说明。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17241139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档