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:]_-]*$'
我正在尝试向 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:]_-]*$'