如何使用 awk 每 n 行插入一个空行?

发布于 2024-07-23 10:43:57 字数 230 浏览 9 评论 0原文

我有一个像这样的输入文件:

line 1
line 2
line 3
line 4
line 5
line 6

我想使用 awk 每隔几行插入一个空行; 例如,每两行:

line 1
line 2

line 3
line 4

line 5
line 6

如何让 awk 每 n 行在文件中放入一个空行?

I've got an input file like this:

line 1
line 2
line 3
line 4
line 5
line 6

I'd like to use awk to insert a blank line every few lines; for example, every two:

line 1
line 2

line 3
line 4

line 5
line 6

How can I get awk to put a blank line into my file every n lines?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

何止钟意 2024-07-30 10:43:58
awk '{print; if (FNR % 5 == 0 ) printf "\n";}' your_file

我想“print”应该在“printf”之前,并且 FNR 对于您的任务来说更准确。

awk '{print; if (FNR % 5 == 0 ) printf "\n";}' your_file

I guess 'print' should be before 'printf', and FNR is more accurate for your task.

帅气称霸 2024-07-30 10:43:58
$ awk -v n=5 '$0=(!(NR%n))?"\n"$0:$0'

如果要更改'n',请通过awk的-v选项设置参数'n'。

$ awk -v n=5 '$0=(!(NR%n))?"\n"$0:$0'

If you want to change 'n', please set the parameter 'n' by awk's -v option.

迷乱花海 2024-07-30 10:43:57

一种更“awk 式”的方式来编写 smcameron 的答案:

awk -v n=5 '1; NR % n == 0 {print ""}'

“1;” 是一个始终为真的条件,并将触发默认操作,即打印当前行。

A more "awk-ish" way to write smcameron's answer:

awk -v n=5 '1; NR % n == 0 {print ""}'

The "1;" is a condition that is always true, and will trigger the default action which is to print the current line.

往事风中埋 2024-07-30 10:43:57
awk '{ if ((NR % 5) == 0) printf("\n"); print; }'

当然,对于n == 5。 替换您对 n 的想法。

awk '{ if ((NR % 5) == 0) printf("\n"); print; }'

for n == 5, of course. Substitute whatever your idea of n is.

轻拂→两袖风尘 2024-07-30 10:43:57

更加笨拙:

awk 'ORS=NR%5?RS:RS RS'

例如:

$ printf "%s\n" {1..12} | awk 'ORS=NR%5?RS:RS RS'
1
2
3
4
5

6
7
8
9
10

11
12

More awkishness:

awk 'ORS=NR%5?RS:RS RS'

For example:

$ printf "%s\n" {1..12} | awk 'ORS=NR%5?RS:RS RS'
1
2
3
4
5

6
7
8
9
10

11
12
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文