假设我有一个包含以下内容的文件:
Release 2.1 OS: RHEL File: package_el6_2.0.1.1_x86_64.rpm
Release 2.1 OS: RHEL File: package_el6_2.0.1.1_i686.rpm
Release 2.1 OS: RHEL File: package_el7_2.0.1.1_x86_64.rpm
Release 2.1 OS: RHEL File: package_el7_2.0.1.1_i686.rpm
Run Code Online (Sandbox Code Playgroud)
我想grep和匹配只包含'package','el6'和'x86_64'的行
我将如何使用grep在一个内衬上进行此操作?该行必须匹配所有三个,grep不应该关心它们之间有多少个字符.如果有一个更好的工具,我很乐意使用它.
我尝试了以下内容并没有得到任何结果:
grep package*el6*x86_64*
Run Code Online (Sandbox Code Playgroud)
看到帖子和文档,我知道*并不意味着与shell中的相同.我正在寻找相当于在正则表达式中使用它.希望这是有道理的.
你的尝试非常接近.*
在shell中,glob术语大致相当于.*
正则表达式..
表示"任何字符",*
表示"重复任意次数(包括零)".
你的正则表达式只需要.
在每个之前*
.尾随*
没有必要:
package.*el6.*x86_64
Run Code Online (Sandbox Code Playgroud)
以下是您输入的示例运行:
grep 'package.*el6.*x86_64' <<< "Release 2.1 OS: RHEL File: package_el6_2.0.1.1_x86_64.rpm
Release 2.1 OS: RHEL File: package_el6_2.0.1.1_i686.rpm
Release 2.1 OS: RHEL File: package_el7_2.0.1.1_x86_64.rpm
Release 2.1 OS: RHEL File: package_el7_2.0.1.1_i686.rpm"
Run Code Online (Sandbox Code Playgroud)
打印:
Release 2.1 OS: RHEL File: package_el6_2.0.1.1_x86_64.rpm
Run Code Online (Sandbox Code Playgroud)