Unix grep未提取所需字符串
我正在为我的类(在Unix中)处理以下问题,我遇到了一些问题 使用Unix grep未提取所需字符串,unix,grep,command,ls,Unix,Grep,Command,Ls,我正在为我的类(在Unix中)处理以下问题,我遇到了一些问题 使用grep命令和正则表达式,创建基于管道的 列出默认目录中所有文件的命令链 其他人可以读或写 这是我到目前为止使用的命令,它将正确匹配正确的行,但我只想打印具有所需权限的文件名 ls -la | grep "^.......rw.*:\d\d\s(.*)$" 这里是只需键入ls-la的结果,顺便说一下,这就是我正在“greping”的内容 我想解决办法是使用: grep -E "^-.{6}(r|.w)" 第
grep
命令和正则表达式,创建基于管道的
列出默认目录中所有文件的命令链
其他人可以读或写
这是我到目前为止使用的命令,它将正确匹配正确的行,但我只想打印具有所需权限的文件名
ls -la | grep "^.......rw.*:\d\d\s(.*)$"
这里是只需键入ls-la
的结果,顺便说一下,这就是我正在“greping”的内容
我想解决办法是使用:
grep -E "^-.{6}(r|.w)"
第一列的结构是“-/d”(文件/目录)+xxx
(所有者)+xxx
(组)+xxx
(其他)
因此,您希望匹配那些以-
(文件)开头并包含在“gorup”部分中的r..
或.w.
要仅打印文件名,您可以通过管道连接到grep-o'[^]*$'
。这将打印最后一块文本。注意这是非常脆弱的,因为在带有空格的文件名中,它只会打印最后一个
测验
我将您的ls-la
存储在文件a
中:
$ grep -E "^-.{6}(r|.w)" a | grep -o '[^ ]*$'
.DS_Store
DifferencesToTagged.txt
functions.py
ls.txt
prog4.py
shared.py
subversion-log.txt
testcases.txt
如果已经匹配了正确的行,那么可以附加如下内容
| tr-s'| cut-d'-f9-
到您的管道
tr-s'
用单个空格替换多个连续空格;cut
命令从每行开始删除除第九个字段以外的所有内容,这些字段由单空格字符分隔。您使用的是什么grep
?我认为标准的grep
不能识别\d
或\s
或括号。您可能需要查看手册页面。如果是这样的话,您可能会遇到一些行的问题,因为ls-l
不显示旧文件的时间。
$ grep -E "^-.{6}(r|.w)" a | grep -o '[^ ]*$'
.DS_Store
DifferencesToTagged.txt
functions.py
ls.txt
prog4.py
shared.py
subversion-log.txt
testcases.txt