2015-04-23 3 views
1

Добрый день Все,Grep или в части строки

Имя файла может быть либо

  1. abc_source_201501.csv Или
  2. abc_source2_201501.csv

Можно ли сделать что-то вроде grep abc_source|source2_201501.csv без полного перечисления имени файла, поскольку имена файлов, с которыми я работаю, намного длиннее примеров, приведенных для получения обоих опций?

Благодарим за помощь здесь.

ответ

2

Используйте расширенный флаг регулярного выражения в grep.

Например:

grep -E abc_source.?_201501.csv 

бы источник из обеих линий в вашем примере. Вы можете думать о других шаблонах регулярных выражений, которые больше подходят вашим данным.

+0

Возможно, я ошибаюсь в вашем фактическом вопросе tho. Что касается того, ищете ли вы эти две строки или смотрите в файлы, названные как эти две строки. –

+0

Это последнее - файлы с именами, которые содержат source1 или source2. – jasmaar

+0

Это работает. Спасибо за это. – jasmaar

0

Вы можете использовать Bash globbing для grep в нескольких файлах одновременно.

Например, чтобы вычленить информацию строки «привет» во всех файлах с именем файла, который начинается с abc_source и заканчивается 201501.csv, выполните следующую команду:

grep hello abc_source*201501.csv 

Вы также можете использовать -r flag, чтобы рекурсивно grep во всех файлах под данной папкой - например, в текущей папке (.).

grep -r hello . 
0

Если вы спрашиваете о шаблонах для сопоставления имен файлов в оболочке, то extended globbing объект в Bash позволяет сказать

shopt -s extglob 
grep stuff [email protected](|2)_201501.csv 

поиска с помощью обоих файлов с одним выражением Глоб.

0

Простейшая возможность состоит в том, чтобы использовать в фигурных скобках:

grep pattern abc_{source,source2}_201501.csv 

Это точно так же, как:

grep pattern abc_source{,2}_201501.csv 

Вы можете использовать несколько шаблонов фигурных скобок в одном слове:

grep pattern abc_source{,2}_2015{01..04}.csv 

расширился до

grep pattern abc_source_201501.csv abc_source_201502.csv \ 
      abc_source_201503.csv abc_source_201504.csv \ 
      abc_source2_201501.csv abc_source2_201502.csv \ 
      abc_source2_201503.csv abc_source2_201504.csv