如何获取(多行)第一个匹配的子字符串?

如何获取(多行)第一个匹配的子字符串?

我有一个文件,内容如下

/hello="somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
       somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
       somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff"
/hello="morestuffmorestuffmorestuffmorestuffmorestuffmorestuffmorestuff
       morestuffmorestuffmorestuffmorestuffmorestuff"

我怎样才能得到公正

/hello="somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
       somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
       somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff"

sed通过管道获取以“/”分隔的/hello内容cut,但我不知道如何获取第一个子字符串。

我使用的命令

sed -n '/hello/, /\"/ p' file.txt | cut -d "/" -f 2

由于某种原因,它将每个子字符串分成两个字段;第一行,然后是其余行。

答案1

要么使用这个:

sed -n '/hello/,/"$/p;/"$/q' infile

或者这个等式:

sed '/hello/,/"$/!d;/"$/q' infile

或者awk也与(假设总是第一行有hello):

awk '/hello/ || 1;/"$/{exit}' infile

否则使用标志来管理它。

awk '/hello/{prnt=1};prnt;/"$/{exit}' infile

答案2

我已经通过下面的 sed 命令完成了

sed '0,/hello.*/!s///' inputfile| sed '/^\/$/,$d'

输出

/hello="somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
       somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
       somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff"

答案3

另一种方法

sed -n '/\/hello/,/"$/p;/"$/q' iputfile

输出

/hello="somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
       somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff
       somestuffsomestuffsomestuffsomestuffsomestuffsomestuffsomestuff"

相关内容