Ответ 1
Вы забыли ".":
cat textfile | grep -o "target_string.*"
У меня есть большой текстовый файл, который содержит уникальную строку в середине. Что я хочу сделать, так это распечатать все ПОСЛЕ строки с помощью 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 и ничего раньше?
Вы забыли ".":
cat textfile | grep -o "target_string.*"
С GNU grep
попробуйте -B0 -A999999999
или аналогичный. Лучшим выбором может быть awk
:
awk '/target_string/ {seen = 1}
seen {print}'
Если (ваша спецификация проблемы немного нечеткая), вам также не нужно печатать соответствующую строку, sed
еще короче:
sed '1,/target_string/d'
Как ни странно, принятый ответ напечатал всю строку, где мне просто нужна вся информация после целевой строки. Это сработало для меня:
sed -n 's/target_string//p' filename
Адаптировано из этого сообщения
Это будет печатать все после каждого совпадения только в той же строке:
perl -lne 'print $1 if /target_string(.*)/' textfile
Это сделает то же самое, за исключением того, что он также напечатает все последующие строки:
perl -lne 'if ($found){print} else{if (/target_string(.*)/){print $1; $found++}}' textfile