使用 sed 仅打印每个段落的第一个单词 [英] Print only the first word of each paragraph using sed

查看:53
本文介绍了使用 sed 仅打印每个段落的第一个单词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道如何使用 sed one-liner 仅打印出每个段落的第一个单词.在这种情况下,段落由跟随 2 个换行符的文本定义.

I am wondering how I can print out only the first word of every paragraph with a sed one-liner. A paragraph in this case is defined by a text that follows 2 line breaks.

例如

This is a paragraph with some text. Some random text that is not really important.

This is another paragraph with some text.
However this sentence is still in the same paragraph.

这个应该改成

This

This

推荐答案

一个可能的 GNU sed 解决方案是:

A possible GNU sed solution would be:

sed -rn ':a;/^ *$/{n;ba};s/( |$).*//p;:b;n;/^ *$/ba;bb'

输出:

This
This

它将仅有空格的行视为空行,并理解段落之间的任意数量的空行.也能正确处理一个单词的段落.

It treats spaces-only lines as empty and understands any number of empty lines between paragraphs. Also processes one-word paragraphs correctly.

这篇关于使用 sed 仅打印每个段落的第一个单词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆