Фильтровать файлы с определенными расширениями файлов, используя регулярные выражения - PullRequest
2 голосов
/ 05 марта 2010

У меня есть файл, содержащий список имен файлов:

esocket.c
esocket.h
dockwin.cpp
dockwin.h
Makefile
getblob
.
и т.д ...

Я ищу регулярное выражение (предпочтительно синтаксис Unix) для следующего:

  1. получить строки с файлами .c, cpp и .h
  2. получить строки, которые не имеют расширения файла.

Ответы [ 2 ]

2 голосов
/ 05 марта 2010
 egrep '^[^.]*(\.(cpp|c|h))?$' yourfile
1 голос
/ 05 марта 2010

простак

awk '
{
 for(i=1;i<=NF;i++){
   if ( $i ~ /\.(c|h|cpp)$/){
    print "file with extension: "$i
   }else{
    print "file w/o extension: "$i
   }
 }
}' file

выход

$ ./shell.sh
file with extension: esocket.c
file with extension: esocket.h
file with extension: dockwin.cpp
file with extension: dockwin.h
file w/o extension: makefile
file w/o extension: getblob
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...