只是玩正则表达式来学习。为什么它与其他文件匹配:errsort、pytest.py 等?在第二行末尾添加一个问号匹配另外两个文件。也尝试过 grep 基本表达式。
谢谢!
$ ls -x | egrep -i "(aa)(dd)?(cc)?(dd)?((bb(ccdd)?(bb)?)?)|(ccdd)"
aa aaaa aabb aabbaa aabbbb aabbccdd aabbccddcc
aabbddbb
aaccaa aaccdd aaddaa aaddccddccdd aaddee errsort pytest.py TEST
$ ls -x | egrep -i "(aa)(dd)?(cc)?(dd)?((bb(ccdd)?(bb)?)?)|(ccdd)?"
aa aaaa aabb aabbaa aabbbb aabbccdd aabbccddcc aabbddbb
aaccaa aaccdd aaddaa aaddccddccdd aaddee errsort pytest.py TEST
test.sh vimtest
$ bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
$ grep --version
grep (GNU grep) 3.7
Run Code Online (Sandbox Code Playgroud)
$ ls | egrep -i "(aa)(dd)?(cc)?(dd)?((bb(ccdd)?(bb)?)?)|(ccdd)" aa aaaa aabb aabbaa aabbbb aabbccdd aabbccdd cc aabb ddbb aaccaa aaccdd aaddaa aaddccddccdd aadd ee $ ls -x | egrep -i "(aa)(dd)?(cc)?(dd)?((bb(ccdd)?(bb)?)?)|(ccdd)?" aa aaaa aabb aabbaa aabbbb aabbccdd aabbccdd cc aabb ddbb aaccaa aaccdd aaddaa aaddccddccdd aadd ee errsort pytest.py 测试 vimtest.sh 测试 $ ls | egrep -i "(aa)(dd)?(cc)?(dd)?((bb(ccdd)?(bb)?)?)|(ccdd)?" aa aaaa aabb aabbaa aabbbb aabbccdd aabbccdd cc aabb ddbb aaccaa aaccdd aaddaa aaddccddccdd aadd ee 错误排序 pytest.py 测试 测试文件 维姆测试 $
$ ls | egrep -io "(aa)(dd)?(cc)?(dd)?((bb(ccdd)?(bb)?)?)|(ccdd)?" aa aa aa aabb aabb aa aabbbb aabbccdd aabbccdd aabb aacc aa aaccdd aadd aa aaddccdd ccdd aadd
这不会给你颜色,但我的屏幕上的粗体是红色的,以指示我认为的模式匹配。
底部的文件没有任何红色。
删除 -x 确实影响了第一个的输出。-o 有很大帮助!
可选匹配(ccdd)?
就是这样:可选。
可能会发生匹配的文本为空的情况,但仍然是一个匹配,一行有匹配。
$ ls -x
aa aaaa aabb aabbaa aabbbb aabbccdd aabbccddcc aabbddbb aaccaa aaccdd aaddaa aaddccddccdd aaddee
errsort pytest.py TEST test.sh vimtest
$ ls -x | cat
aa aaaa aabb aabbaa aabbbb aabbccdd aabbccddcc aabbddbb
aaccaa aaccdd aaddaa aaddccddccdd aaddee errsort pytest.py TEST
test.sh vimtest
Run Code Online (Sandbox Code Playgroud)
重要的是要理解,当ls
输出通过管道传输时,它会发生变化。现在有三行与 grep 匹配。
由于第一行和第二行在 (several) 上匹配aa
,因此都会打印这两行。
$ ls -x | egrep -i "(aa)(dd)?(cc)?(dd)?((bb(ccdd)?(bb)?)?)|(ccdd)"
aa aaaa aabb aabbaa aabbbb aabbccdd aabbccddcc aabbddbb
aaccaa aaccdd aaddaa aaddccddccdd aaddee errsort pytest.py TEST
$ ls -x | egrep -i "(aa)(dd)?(cc)?(dd)?((bb(ccdd)?(bb)?)?)|(ccdd)?"
aa aaaa aabb aabbaa aabbbb aabbccdd aabbccddcc aabbddbb
aaccaa aaccdd aaddaa aaddccddccdd aaddee errsort pytest.py TEST
test.sh vimtest
Run Code Online (Sandbox Code Playgroud)
如图所示,由于 .第三行在空字符串上获得了匹配(ccdd)?
。
我假设您的文件列表的格式不正确。
归档时间: |
|
查看次数: |
527 次 |
最近记录: |