我正在尝试grep一个file.txt来搜索2个字符串cp和(目标文件名),其中文件中的行如下所示,
cp (source file name) (target file name)
我的问题是字符串'(目标文件名)'有特定的模式,如/path/to/file/TC_12_IT_(6位)(6位)TC_12_TEST _(2位).tc12.tc12
我使用下面的grep命令搜索包含这两个字符串的行,
grep -E cp.*/path/to/file/TC_12_IT_ file.txt
如何在grep命令中更具体地使用(目标文件名)来搜索(目标文件名)及其所有模式,如下所示,
grep -E 'cp.*/path/to/file/TC_12_IT_*_*_TC_12_TEST_*.tc12.tc12' file.txt
我们可以在grep中使用通配符来搜索文件中的字符串吗?就像我们可以使用通配符 * 来列出文件一样。
ls -lrt TC_12_*_12345678.txt
请说明是否有任何其他办法来实现这一目标。
2条答案
按热度按时间vc9ivgsu1#
更具体地说:
^
:行的开始。\s+
:1个或多个空白字符。.+
:1个或多个任意字符。\S+
:1个或多个非空白字符。\d{6}
:正好6位数字。[.]
:文本点(.
)。请注意,正则表达式中的普通.
表示任何字符,除非它位于字符类中([.]
)或转义(\.
)。$
:行的末尾。GNU
grep
manualperlre - Perl regular expressions
kognpnkq2#
像这样,使用GNU
grep
:正则表达式匹配如下:
| 节点|解释|
| - ------|- ------|
|
cp
|“cp”||
.*
|除\n之外的任何字符(0次或更多次(匹配尽可能多的数量))||
TC_12_IT_
| 'TC_12_IT_'||
\d{6}
|数字(0-9)(6次)||
_
|- -||
\d{6}
|数字(0-9)(6次)||
TC_12_TEST
|“TC_12测试”||
\d{2}
|数字(0-9)(2次)||
.
|除\n之外的任何字符||
tc12
|“tc12”|| x1米11米1x|除\n之外的任何字符|
|
tc12
|“tc12”|