我有一个名为信息有这条线
CSC/UT/USA/WBIMB/SAP/orders05:orders05/ORDERS05/NONE/ORDRSP/758
我正在做一个grep(平台是AIX 6.1)
grep CSC/UT/USA/WBIMB/SAP/orders05:orders05/ORDERS05/NONE/ORDRSP/758 message
它找到该行并显示输出
但是,当我尝试使用通配符时,如下所示
grep CSC/UT/USA/WBIMB/SAP/orders05:orders05/ORDERS05/.*/ORDRSP/758 message
它没有找到这条线。我也尝试过使用单引号/双引号。它不起作用。我在这里错过了什么吗?我很困惑。
答案1
笔记:我无法在 AIX 上测试这一点,但以下内容适用于 GNU grep。
grep CSC/UT/USA/WBIMB/SAP/orders05:orders05/ORDERS05/.\*/ORDRSP/758 message
或者:
grep 'CSC/UT/USA/WBIMB/SAP/orders05:orders05/ORDERS05/.\+/ORDRSP/758' message
这是因为在 grep 的基本正则表达式中,大多数元字符只有在转义时才具有特殊含义。从grep
手册页:
In basic regular expressions the meta-characters ?, +, {, |, (, and ) lose
their special meaning; instead use the backslashed versions \?, \+, \{,
\|, \(, and \).
答案2
尝试
egrep CSC/UT/USA/WBIMB/SAP/orders05:orders05/ORDERS05/*/ORDRSP/758 message