Grep

makefile 中的十六進制顏色程式碼 grep 正則表達式

  • April 20, 2020

所以我有一個包含有效和無效十六進制顏色程式碼的文本文件。我希望能夠過濾掉無效程式碼並只列印有效程式碼。要使程式碼有效,它必須有一個散列符號,在散列之後長 6 或 8 個字元,字母必須是 AF。我下面的 grep 命令儲存在一個 makefile 中,每次我嘗試執行該文件時,它都會給我一個錯誤,您可以在下面看到。

命令:

grep -ivE '^#([a-f0-9]{6}|[a-f0-9]{8})$' colours.txt

錯誤:

/bin/sh: 1: Syntax error: Unterminated quoted string
Makefile:2: recipe for target 'run-task-1' failed
make: *** [run-task-1] Error 2

程式碼:

#b293a6
#ead58f
#a69d36a2
#067806
#afe6e
#7f0bf7ef
#dd85
#042847421
#1a283af

想要的輸出:

#b293a6
#ead58f
#a69d36a2
#067806
#7f0bf7ef

grep -ivE '^#([a-f0-9]{6}|[a-f0-9]{8})$' colours.txt

要使其成為make傳遞給 的內容sh,您需要防止將其make辨識$為元字元並嘗試替換make變數。

只需使用$$.

引用自:https://unix.stackexchange.com/questions/581373