比赛结束后在线打印所有内容[重复]

问题描述 投票:0回答:4

我有一个很大的文本文件,中间包含一个唯一的字符串。我想使用 grep 打印字符串后面的所有内容。

cat textfile | grep "target_string"
This highlights target_string but prints the whole file

cat textfile | grep -o "target_string"
This prints only target_string

cat textfile | grep -o "target_string*"
This prints only target_string

如何打印“target_string”之后的所有内容而不打印之前的任何内容?

bash grep
4个回答
52
投票

奇怪的是,接受的答案打印出了整行,我只想要目标字符串之后的所有信息。这对我有用:

sed -n 's/target_string//p' filename

改编自这篇文章


35
投票

使用 GNU

grep
,尝试
-B0 -A999999999
或类似的。更好的选择可能是
awk
:

awk '/target_string/ {seen = 1}
     seen            {print}'

如果(你的问题说明有点不清楚)你也不需要打印匹配行,

sed
甚至更短:

sed '1,/target_string/d'

30
投票

你忘记了“。”在正则表达式中:

cat textfile | grep -o "target_string.*"

6
投票

这将在每场比赛后打印所有内容,仅在同一行:

perl -lne 'print $1 if /target_string(.*)/' textfile

这将执行相同的操作,但它还会打印所有后续行:

perl -lne 'if ($found){print} else{if (/target_string(.*)/){print $1; $found++}}' textfile
© www.soinside.com 2019 - 2024. All rights reserved.