首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在每N行之后插入新行?

在每N行之后插入新行?
EN

Unix & Linux用户
提问于 2011-10-29 14:05:12
回答 3查看 62.6K关注 0票数 34

如何使用文本处理工具在每N行之后插入新行?

N=2示例:

投入:

代码语言:javascript
复制
sadf
asdf
yxcv
cxv
eqrt
asdf

产出:

代码语言:javascript
复制
sadf
asdf

yxcv
cxv

eqrt
asdf
EN

回答 3

Unix & Linux用户

发布于 2018-10-09 20:06:19

sed (GNU)

使用(GNU) sed

代码语言:javascript
复制
sed '0~2G'

简称(丑陋的N=100):

代码语言:javascript
复制
sed 'n;G'

文思解释道:

第一步匹配第一步开始的每一步线。例如,sed -n 1~2p'‘将在输入流中打印所有奇数行,地址2~5将匹配第五行,从第二行开始。首先可以是零;在这种情况下,sed的操作就好像它等于步骤一样。(这是一个分机。)

sed (其他)

与其他sed (计算新行数):

代码语言:javascript
复制
sed -e 'p;s/.*//;H;x;/\n\{2\}/{g;p};x;d'

或者,为了更便于移植,编写为(删除某些版本的sed的注释):

代码语言:javascript
复制
sed -e '             # Start a sed script.
         p            # Whatever happens later, print the line.
         s/.*//       # Clean the pattern space.
         H            # Add **one** newline to hold space.
         x            # Get the hold space to examine it, now is empty.
         /\n\{2\}/{   # Test if there are 2 new lines counted.
             g        # Erase the newline count.
             p        # Print an additional new line.
           }          # End the test.
         x            # match the `x` done above.
         d            # don't print anything else. Re-start.
       '              # End sed script.

awk

对于awk,可能:

代码语言:javascript
复制
awk '1 ; NR%2==0 {printf"\n"} '
票数 7
EN

Unix & Linux用户

发布于 2015-01-27 17:50:25

使用paste

代码语言:javascript
复制
 paste -d'\n' - - /dev/null <file
票数 6
EN

Unix & Linux用户

发布于 2015-01-27 10:18:33

代码语言:javascript
复制
sed n\;G <infile

..。你只需要..。

例如:

代码语言:javascript
复制
seq 6 | sed n\;G

输出:

代码语言:javascript
复制
1
2

3
4

5
6

.(在6后面还有一个空白)...or.

代码语言:javascript
复制
seq 5 | sed n\;G

输出:

代码语言:javascript
复制
1
2

3
4

5

(第5条后面没有空白)

如果在最后一行情况下总是应该省略空白:

代码语言:javascript
复制
sed 'n;$!G' <infile
票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/23545

复制
相关文章

相似问题

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