Я застрял на этом и не могу обернуть голову: как я могу сказать sed вернуть найденное значение, а в противном случае заткнись ?
Это действительно за граньюя: Почему sed возвращает всю строку, если он ничего не нашел?Нужно ли запускать другой тест для возвращенной строки, чтобы проверить это?Я попытался использовать «-n» на (очень короткой) странице справки, но он эффективно подавляет весь вывод, включая совпадающие строки.
Это то, что у меня сейчас есть:
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
(когда он должен вернуть это = "" ничто ! Dang, вы ничего не нашли, так что молчите! За громкий крик !!)
Я пытался проверить возвращаемое значение, но и это не удалось!Вздох !!
$ 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
действительно ли инструмент, который я должен использовать?Я хочу извлечь иголку из стога сена, и я хочу иглу или ничего ..?