Подтвердить что ты не робот

Печатать все в строке после матча

У меня есть большой текстовый файл, который содержит уникальную строку в середине. Что я хочу сделать, так это распечатать все ПОСЛЕ строки с помощью 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 и ничего раньше?

4b9b3361

Ответ 1

Вы забыли ".":

    cat textfile | grep -o "target_string.*"

Ответ 2

С GNU grep попробуйте -B0 -A999999999 или аналогичный. Лучшим выбором может быть awk:

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

Если (ваша спецификация проблемы немного нечеткая), вам также не нужно печатать соответствующую строку, sed еще короче:

sed '1,/target_string/d'

Ответ 3

Как ни странно, принятый ответ напечатал всю строку, где мне просто нужна вся информация после целевой строки. Это сработало для меня:

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

Адаптировано из этого сообщения

Ответ 4

Это будет печатать все после каждого совпадения только в той же строке:

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

Это сделает то же самое, за исключением того, что он также напечатает все последующие строки:

perl -lne 'if ($found){print} else{if (/target_string(.*)/){print $1; $found++}}' textfile