Регулярное выражение для сопоставления с первым символом и расширением файла - PullRequest
0 голосов
/ 08 марта 2019

Я использую Bash, чтобы попытаться написать команду, которая получает каждый файл, где первый символ не является «a» и файл не заканчивается на «.html», но, похоже, не может заставить оба работать должным образом.

До сих пор я мог заставить свое регулярное выражение соответствовать всем файлам, которые начинаются с «а» и заканчиваются на «.html», и удалять их, но моя проблема, которую я не могу решить, это когда файл начинается с «а» и заканчивается другим расширением файла. Кажется, мое регулярное выражение игнорирует это второе требование и просто скрывает его.

cat inputfile.txt | sed -n '/^[^a].*[^html$]/p'

Содержимое входного файла:

123
anapple.html
456
theapple.html
789
nottrue.html
apple.csv 
12

Выход:

123
456
theapple.html
789
nottrue.html
12

1 Ответ

0 голосов
/ 08 марта 2019

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

grep -v '^a.*\.html$' inputfile.txt
...