首页 > 解决方案 > 在找到包含模式的行后,我想使用 sed 或 awk 附加符合条件的多行

问题描述

我有这段文字:

Sample: 1
Description: THIS SAMPLE CONTAINS DATA FROM WITH THE FOLLOWING CRITERIA
BLAH BLAH BLAH
BLAH BLAH BLAH.   
random label:

我将如何连接文件中的某些行,使其看起来像这样:

Sample: 1
Description: THIS SAMPLE CONTAINS DATA MEETING THE FOLLOWING CRITERIA BLAH BLAH BLAH BLAH BLAH.
random label:

唯一可以确定的是,紧跟“Description”的每一行,以大写字母开头并包含所有大写字母,都将连接到包含“Description”的行。

随机标签,表示该标签将是 60 个标签之一。

标签: awksed

解决方案


这可能对您有用(GNU sed):

sed '/^Description/{:a;N;/\n[[:upper:]]/s/\n/ /;ta;P;D}' file

从行首开始收集以大写字母开头的行Description

如果您只想要不包含小写字母的行,请使用:

sed '/^Description/{:a;N;/\n.*[[:lower:]]/!s/\n/ /;ta;P;D}' file

推荐阅读