我需要为仅包含小写字母和空格的行grep文件。这两个条件必须至少满足一次,并且不允许使用其他字符。
我知道如何grep只用于小写或仅用于空格,但我不知道如何在一个regexp / command中加入这两个条件。
我现在只有这个:
egrep "[[:space:]]" $DIR/$file | egrep -vq "[[:upper:]]"
当然会显示带有数字和/或特殊字符的行,这不是我想要的。 感谢。
答案 0 :(得分:2)
这就是你需要的
-x
匹配整行
第一个表达式匹配完全由空格和小写字母组成的行。
第二个表达式匹配同时包含空格和小写字母的行。
egrep -x '[[:lower:] ]*' $DIR/$file | egrep '( [[:lower:]])|([[:lower:]] )'
答案 1 :(得分:2)
awk
可能更好地表达这样的条件:
awk '/^[ a-z]+$/ && /[a-z]/ && / /' file
也就是说,它会检查一行:
$ 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
答案 2 :(得分:1)
首先grep所有只包含小写字符和空格的行,然后是所有包含至少一个空格的行。
egrep -x '[[:lower:][:space:]]+' "$DIR/$file" | egrep '[[:space:]]+'
[:space:]
元类也匹配制表符,如果需要,可以用普通空格替换。