GREP 输出带有特殊字符的行,除了

GREP out lines with special characters except

我正在尝试向 grep -v [[:punct:]] 添加一个例外,不排除带有某些预定义特殊字符的行。在以下示例中:-_

输入:

Color red
Color _ yellow
Color blu+e
Color gr-een
Color bla!ck

预期输出:

Color red 
Color _ yellow
Color gr-een

使用awk你可以做到:

awk '/[-_]/ || !/[[:punct:]]/' file
Color red
Color _ yellow
Color gr-een

这会获取以下任一行:

  • -_
  • 不包含 [[:punct:]].

要解决像 Color _ yellow ! 这样的问题,你可以这样做:

awk '/[-_]/ {a=[=11=];gsub(/[-_]/,"",a);if (a!~/[[:punct:]]/) print} !/[[:punct:]]/' file

与其弄清楚要排除的内容,不如说出要保留的内容:

grep '^[[:alnum:][:blank:]_-]*$'