我有一个文件,我想grep以-rwx或drwx开头的行以任何数字结尾.
我有这个,但它不是很正确.有任何想法吗?
grep [^.rwx]*[0-9] usrLog.txt
Run Code Online (Sandbox Code Playgroud)
Jon*_*ler 56
棘手的部分是一个正则表达式,它包含一个破折号作为角色类中的一个有效字符.破折号必须在(正常)字符类的开始之后立即到达,并且在插入符号之后立即为否定字符类.如果您也需要一个紧密的方括号,那么您需要紧密的方括号,然后是短划线.幸运的是,你只需要冲刺,因此选择了符号.
grep '^[-d]rwx.*[0-9]$' "$@"
Run Code Online (Sandbox Code Playgroud)
请参阅:正则表达式和grep for POSIX标准详细信息.
Ray*_*Ray 28
看起来你在正确的轨道上... ^角色匹配行首,并$匹配行尾.乔纳森的模式对你有用......只是想给你背后的解释
小智 5
应当注意,插入号(^)在括号内的行为不仅会有所不同,而且将其置于括号外的效果也会相反。将插入符号放在您要插入的位置,将搜索所有不以放在括号内的内容开头的字符串。您还希望像grep一样在方括号之间的星号前放置一个句点,它也可以用作“通配符”。
grep ^[.rwx].*[0-9]$
Run Code Online (Sandbox Code Playgroud)
这应该对您有用,我注意到有些发布者在其表达式中也使用了字符类,这也是一种有效的方法,但是您在原始表达式中没有使用任何字符类,因此我尝试尽可能地接近您的解释沿途的每一个细微变化都可以更好地理解。否则我们如何学习?