我正在尝试向grep -v [[:punct:]]
添加例外,不要排除带有某些预定义特殊字符的行。在以下示例中:-
和_
输入:
Color red
Color _ yellow
Color blu+e
Color gr-een
Color bla!ck
预期产出:
Color red
Color _ yellow
Color gr-een
答案 0 :(得分:2)
使用awk
即可:
awk '/[-_]/ || !/[[:punct:]]/' file
Color red
Color _ yellow
Color gr-een
这得到以下任何一行:
-
或_
。[[:punct:]]
。要解决像Color _ yellow !
这样的行的问题,您可以执行以下操作:
awk '/[-_]/ {a=$0;gsub(/[-_]/,"",a);if (a!~/[[:punct:]]/) print} !/[[:punct:]]/' file
答案 1 :(得分:1)
不要弄清楚要排除的内容,而是要说明要保留的内容:
grep '^[[:alnum:][:blank:]_-]*$'