Еще одна возможность. Это не лучше и не хуже, чем предоставляемые решения grep
, но если вы один из тех людей, более знакомых с простыми приложениями операции sed * s///
, которые grep -o
с \K
может подойти.
$: sed 's/^.*://' in.txt
thatswhationlywant.
Если вы не очень знакомы с sed
(проверьте здесь для более подробной информации) -
s/a/b/
означает найти шаблон a
и заменить его на b
.
^
привязывает шаблон поиска в начале строки
.
соответствует любому символу (опять же, см. Подробности для точных исключений)
*
означает «0 или более из предыдущего шаблона», в данном случае это точка (.
), поэтому любое число любого символа
:
- буквальное двоеточие
То есть 's/^.*://'
означает «заменить любые / все символы от начала строки до двоеточия включительно и ничего».
Имейте в виду, что двоеточие - это символ, поэтому если в строке есть несколько двоеточий, они ВСЕ будут использованы, потому что *
"жадный".
$: echo "a:b:c:d"|sed 's/^.*://'
d
Если это не то, что вы хотите, подпишите в [^:]
(что означает « не двоеточие», потому что внутри «символьного класса» в квадратных скобках ^
- это не ') для .
, вот так:
$: echo "a:b:c:d"|sed 's/^[^:]*://'
b:c:d