Почему делает это 'grep-o' сбой, и как я должен работать вокруг этого?

Первый выдаст исключение, если исходный тип не может быть брошен к целевому типу. Последний приведет к sc2, являющемуся нулевой ссылкой, но никаким исключением.

[Редактирование]

Мой исходный ответ является, конечно, самым явным различием, но поскольку Eric Lippert указывает , это не единственное. Другие различия включают:

  • Вы не можете использовать 'в качестве' оператора для кастинга к типу, который не принимает 'пустой указатель' как значение
  • , Вы не можете использовать относительно , преобразовывают вещи, как числа к различному представлению (плавание к интервалу, например).

И наконец, с помощью 'в качестве' по сравнению с оператором броска, Вы также говорите, что "я не уверен, успешно выполнится ли это".

9
задан Anton Geraschenko 15 November 2009 в 03:14
поделиться

3 ответа

Да, обработка 2.5.1 -o была ошибочной: http://www.mail-archive.com/ bug-grep@gnu.org /msg00993.html

Grep, вероятно, не подходящий инструмент для этого; sed или tr или даже perl могут быть лучше в зависимости от фактической задачи.

9
ответ дан 4 December 2019 в 19:34
поделиться

Это даст аналогичные результаты:

echo abc123def | sed -n 's/[^0-9]*\([0-9]\+\).*/\1/p'

Ваш вопрос почти дублирует этот .

0
ответ дан 4 December 2019 в 19:34
поделиться

вы можете использовать оболочку. это быстрее

$ str=abc123def
$ echo ${str//[a-z]/}
123
2
ответ дан 4 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

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