Grep-специфические данные из строки [дубликат]

Чтобы быть "непериодом", тогда последовательность [ ^.] - это то, что вам нужно. В ваших примерах у вас есть \ перед [, что неверно.

Так, например:

foo("some text").arg("more text");
foo("some text");

% sed 's/foo("some text")[^.]/replaced text/' tstfile
foo("some text").arg("more text");
replaced text

Обратите внимание, что это также заменило символ, следующий за foo (..) . Если вы хотите сохранить это, мы можем его запомнить:

% sed 's/foo("some text")\([^.]\)/replaced text\1/' tstfile
foo("some text").arg("more text");
replaced text;
2
17.05.2019, 03:16
5 ответов

grep -o 'until: [^V]*' file | cut -d ':' -f 2-

2
27.01.2020, 21:48

Попробуйте также

awk '{sub (/^.*until: /, "")} 1' file
Sun Nov 24 12:11:28 EST 2019
Thu Feb 24 13:31:19 EST 2022
Fri Dec 20 12:11:17 EST 2041

или даже короче

sed 's/^.*until: //' file
Sun Nov 24 12:11:28 EST 2019
Thu Feb 24 13:31:19 EST 2022
Fri Dec 20 12:11:17 EST 2041
8
27.01.2020, 21:48

Если формат всегда будет одинаковым, вы также можете попробовать:

cut -d':' -f 5- /path-to-file 
2
27.01.2020, 21:48

Установив разделитель awkна "until:", вы можете получить последующую строку, пока этот текст существует в вашей строке.awk -F'until:' '{print $2}'

echo "Valid from: Fri Nov 24 12:11:28 EST 2017 until: Sun Nov 24 12:11:28 EST 2019" | awk -F'until:' '{print $2}'
3
27.01.2020, 21:48

С GNU grep

echo "$string" | grep -oP 'until: \K.*'

Это соответствует слову "до :", тогда \Kзабывает обо всем, что только что было сопоставлено, тогда .*может сопоставить все после этого.

5
27.01.2020, 21:48

Теги

Похожие вопросы