如何用特定的模式对字符串进行grep



我试图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

请建议是否有其他方法来实现这一点。

具体来说:

grep -P '^cps+.+s+S+/TC_12_IT_d{6}_d{6}_TC_12_TEST _d2[.]tc12[.]tc12$' in_file > out_file

^:行首。
s+: 1个或多个空白字符。
.+: 1个或多个任意字符。
S+: 1个或多个非空白字符。
d{6}:正好6位。
[.]:文字点(.)。请注意,正则表达式中的普通.意味着任何字符除非它在字符类([.])或转义(.)中。
$:行尾。

参见:
GNUgrep手册
Perl正则表达式

像这样,使用GNUgrep:

grep -P 'cp.*TC_12_IT_d{6}_d{6}TC_12_TESTd{2}.tc12.tc12' file

正则表达式匹配如下:

tbody> <<tr>
节点说明
cpcp的
.*除n以外的任何字符(0次或更多次(匹配可能的最大次数))
TC_12_IT_'TC_12_IT_'
d{6}数字(0 - 9)(6次)
__
d{6}数字(0 - 9)(6次)
TC_12_TEST'TC_12_TEST'
d{2}数字(0 - 9)(2次)
.除n外的任意字符
tc12'tc12'
.任何字符,除了n
tc12'tc12'

相关内容

  • 没有找到相关文章

最新更新