仅对小写和空格进行 Grep
Grep only for lowercase and spaces
我需要为仅包含小写字母和 space 的行搜索文件。这两个条件必须至少满足一次,并且不允许使用其他字符。
我知道如何仅针对小写或 space 进行 grep,但我不知道如何将这两个条件合并为一个 regexp/command。
我现在只有这个:
egrep "[[:space:]]" $DIR/$file | egrep -vq "[[:upper:]]"
这当然会显示带有数字 and/or 特殊字符的行,这不是我想要的。
谢谢
这就是您所需要的
-x
匹配整行
第一个表达式匹配完全由 space 和小写字母组成的行。
第二个表达式匹配同时具有 space 和小写字母的行。
egrep -x '[[:lower:] ]*' $DIR/$file | egrep '( [[:lower:]])|([[:lower:]] )'
awk
这样的条件可能更好表达:
awk '/^[ a-z]+$/ && /[a-z]/ && / /' file
也就是说,它检查一行:
- 仅包含 space 和小写字母。
- 它至少包含一个小写。
- 它至少包含一个 space。
测试
$ cat a
hello this is something simple
but SUDDENLY not
wah
wa ah
$ awk '/^[ a-z]+$/ && /[a-z]/ && / /' a
hello this is something simple
wa ah
首先grep所有只包含小写字符和白色space的行,然后是所有包含至少一个白色space.
的行
egrep -x '[[:lower:][:space:]]+' "$DIR/$file" | egrep '[[:space:]]+'
[:space:]
meta class 也匹配制表符,如果需要可以用普通 space 替换。
我需要为仅包含小写字母和 space 的行搜索文件。这两个条件必须至少满足一次,并且不允许使用其他字符。
我知道如何仅针对小写或 space 进行 grep,但我不知道如何将这两个条件合并为一个 regexp/command。
我现在只有这个:
egrep "[[:space:]]" $DIR/$file | egrep -vq "[[:upper:]]"
这当然会显示带有数字 and/or 特殊字符的行,这不是我想要的。 谢谢
这就是您所需要的
-x
匹配整行
第一个表达式匹配完全由 space 和小写字母组成的行。
第二个表达式匹配同时具有 space 和小写字母的行。
egrep -x '[[:lower:] ]*' $DIR/$file | egrep '( [[:lower:]])|([[:lower:]] )'
awk
这样的条件可能更好表达:
awk '/^[ a-z]+$/ && /[a-z]/ && / /' file
也就是说,它检查一行:
- 仅包含 space 和小写字母。
- 它至少包含一个小写。
- 它至少包含一个 space。
测试
$ cat a
hello this is something simple
but SUDDENLY not
wah
wa ah
$ awk '/^[ a-z]+$/ && /[a-z]/ && / /' a
hello this is something simple
wa ah
首先grep所有只包含小写字符和白色space的行,然后是所有包含至少一个白色space.
的行egrep -x '[[:lower:][:space:]]+' "$DIR/$file" | egrep '[[:space:]]+'
[:space:]
meta class 也匹配制表符,如果需要可以用普通 space 替换。