我有一个很大的文本文件,中间包含一个唯一的字符串。我想使用 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”之后的所有内容而不打印之前的任何内容?
使用 GNU
grep
,尝试 -B0 -A999999999
或类似的。更好的选择可能是awk
:
awk '/target_string/ {seen = 1}
seen {print}'
如果(你的问题说明有点不清楚)你也不需要打印匹配行,
sed
甚至更短:
sed '1,/target_string/d'
你忘记了“。”在正则表达式中:
cat textfile | grep -o "target_string.*"
这将在每场比赛后打印所有内容,仅在同一行:
perl -lne 'print $1 if /target_string(.*)/' textfile
这将执行相同的操作,但它还会打印所有后续行:
perl -lne 'if ($found){print} else{if (/target_string(.*)/){print $1; $found++}}' textfile