2014-12-11 2 views
0

Как я могу отфильтровать текст и сопоставить строки с dd, заглавную букву, за которой следует 2 символа. 4 цифры, например, «20, Apr.2014», «2, Mar.2013», используя только оболочку bash. Нет sed или awk.bash shell wildcard pattern matching

+0

Лучше дать образец ввода/вывода и предоставить нам ваши попытки! –

+0

Что вы пробовали? Кроме того, примеры - это не то, что вы описываете, с которым хотите сопоставлять. Специальные персонажи имеют значение. – Grice

+0

@Grice ответ ниже, и он работает так, как будто я хочу соответствовать строкам, начинающимся с «20, Apr.2014». Не нужно слишком усложнять это. – learnToProgram

ответ

0
cat fileName | grep -E '^[0-9]{1,2},[A-Z][a-z][a-z].[0-9][0-9][0-9][0-9]' 

Это будет соответствовать шаблону "20, Apr.2014", "2, Mar.2013". {1,2} означает одну или две цифры.

+1

Вы можете дополнительно использовать '{}', чтобы сделать его немного короче - '^^[0-9] {1,2}, [AZ] [az] {2}. [0-9] {4} «'. Не уверен, что делает его более ясным или имеет другие преимущества, но он немного меньше печатает ... – twalberg

1

Этот символ должен это сделать:

[0-3][0-9],[A-Z][a-z][a-z].{19,20}[0-9][0-9] 

Это позволяет только лет в 20-м и 21-м веках, я думаю, это очевидно, как расширить это.