Я застрял в этом и не могу обернуть вокруг себя: как я могу сказать sed вернуть найденное значение, а в противном случае заткнуть?
Это действительно вне меня. Почему sed вернул бы целую строку, если бы не нашел ничего? Должен ли я запустить другой тест на возвращаемой строке, чтобы проверить его? Я попытался использовать "-n" с (очень короткой) man-страницы, но он эффективно подавляет весь вывод, включая согласованные строки.
Это то, что у меня есть сейчас:
echo plop-02-plop | sed -e 's/^.*\(.\)\([0-9][0-9]\)\1.*$/\2/'
который возвращает
02
(и это прекрасно и денди, спасибо вам большое), но:
echo plop-02plop | sed -e 's/^.*\(.\)\([0-9][0-9]\)\1.*$/\2/'
возвращает
plop-02plop
(когда он должен вернуть это = "" ничего! Данг, ты ничего не нашел, так что будь тихим!
Для крика вслух!!)
Я попытался проверить возвращаемое значение, но это тоже не удалось! Гасп!
$ echo plop-02-plop | sed -e 's/^.*\(.\)\([0-9][0-9]\)\1.*$/\2/' ; echo $?
02
0
$ echo plop-02plop | sed -e 's/^.*\(.\)\([0-9][0-9]\)\1.*$/\2/' ; echo $?
plop-02plop
0
$
Это последнее, о котором я даже не могу поверить. Является ли sed
инструментом, которым я должен пользоваться? Я хочу извлечь иглу из стога сена, и я хочу иглу или ничего.?