2013-02-26 2 views
1

Я пытаюсь соответствовать только цифрам из текстового файла, который находится в этом формате:Bash Regex Matching цифра

> 1234 

Я бег через файл с петлей. Каждая строка в магазин $i

$i | grep "\d{4}" 

выход выглядит следующим образом:

> 
1234 
> 
5678 

Почему он все еще outputing в >? Я хочу их удалить.

+1

'$ i' в начале строки попытается выполнить команду со значением , например команда под названием '1234'. Я также смущен тем, «что вы делаете неправильно». Ваш вывод не выглядит неправильным для меня ... –

+0

Вы хотите показывать только цифры? – raina77ow

+0

Жаль, что я не был чист. Я имею в виду, почему он выводит '>'. Я пытаюсь избавиться от них. – ExceptionLimeCat

ответ

2

От man grep

-o, --only-matching 
      Print only the matched (non-empty) parts of a matching line, with each such part on a 
      separate output line. 

grep -o .... Попробуйте

Тест:

i="> 1234" 
$ echo "$i" 
> 1234 
$ echo "$i" | grep -oP "\d{4}" 
1234 
+0

Примечание для себя, проверьте manpages ... Очевидно, что все изменилось с тех пор, как grep Solaris 7 :-) – William