我有一个包含文件路径的很长的文件,每行一个。我想检索列出的所有目录的列表,这些目录只有 1 级深。因此,我只想提取其中包含单个行的那些行/
:
我要:./somedir
我不要:./somedir/someotherdir
我可以用 grep 和/或正则表达式做到这一点吗?
当然。这很简单:
find . | grep -P '^\./[^/]*$'
Run Code Online (Sandbox Code Playgroud)
...显然我使用的“查找”命令只是为了说明您所描述的内容。正则表达式的工作原理如下:
^
和$
是指定(分别)行的开头和结尾的锚点。所有内容必须在这两个字符之间\./
是文字句点后跟文字正斜杠[^]
是一个字符类,不允许在 之后^
和之前]
*
后[^/]
说,让零次或多个出现该字符类的你也可以这样做:
dosomething | grep -P '^[^/]*/[^/]*$'
Run Code Online (Sandbox Code Playgroud)
这将只允许/
在行上的任何位置(甚至是第一个或最后一个字符)上的单个字符。
归档时间: |
|
查看次数: |
18631 次 |
最近记录: |