Итак, у меня есть текстовый файл, содержащий действительные и недействительные шестнадцатеричные цветовые коды. Я хочу иметь возможность отфильтровать недействительные коды и распечатать только действительные. Чтобы код был действительным, он должен иметь символ ha sh, длиной 6 или 8 символов после символа ha sh, а символы должны быть af или 0-9. Моя команда grep, приведенная ниже, хранится в make-файле, но, похоже, это не является причиной того, что мое регулярное выражение не работает, так как оно избавляется от кодов, которые содержат менее 6 символов, но не от кодов с 7 или более 8 символов или коды, которые не имеют букв af. В целях тестирования я использую -v просто для распечатки недействительных кодов, поскольку я хочу увидеть, какие коды соответствуют, а какие нет.
grep -vE '^#([a-f0-9]{6})|([a-f0-9]{8})$$' colours.txt
Коды:
#b293a6
#ead58f
#31511bxf
#a69d36a2
#067806
#afe6e
#7f0bf7ef
#dd85
#042847421
#1a283af
Требуется вывод:
#b293a6
#ead58f
#a69d36a2
#067806
#7f0bf7ef
В данный момент я получаю:
#afe6e
#dd85
Обновлен вывод:
sean@sean-VirtualBox:~/Desktop$ head colours.txt | cat -A
#b293a6^M$
#ead58f^M$
#a69d36a2^M$
#067806^M$
#7f0bf7ef^M$
#f8b366^M$
#042847421^M$
#8946d7^M$
#c927d4^M$
#3e568bff^M$