У меня есть этот файл:Путаница с * в Sed
test.txt
============
a b c
testing=123
a b c
Я думал, следующая команда заменит тестирование = 123 строки.
sed "s/^testing=*/testing=alpha/g" test.txt
Он в результате в:
a b c
testing=alpha123
a b c
Так что мне нужно:
sed "s/^testing=[^\n]*/testing=alpha/g" test.txt
, чтобы получить это:
a b c
testing=alpha
a b c
Может кто-нибудь объяснить, что происходит. Символ * должен соответствовать всем символам.
Вы были быстро! Я удаляю свой ответ, поскольку ваш был первым, и объясняет это лучше :) +1 – fedorqui
Теперь я знаю, как работает [^ \ n] *. Он соответствовал любым символам, отличным от нового символа строки. – Exploring
Просто указывая на полноту, «любое количество повторений» включает в себя нулевые повторения. '*' соответствует нулю или более вхождений предыдущей конструкции. – ajk