为什么这个命令行(批处理文件)不起作用?

时间:2014-08-23 12:23:32

标签: regex batch-file cmd

我有一个命令行,它在第二列中查找某些ID(2个ID)。但是我希望这个命令能够搜索所有列,而不仅仅是第二列。 有人可以帮忙吗? 搜索第二列的命令行是:

findstr /rb /c:"[^|]*| *ID1 *|" /c:"[^|]*| *ID2 *|" "src.txt" >" dest.txt"

有人可以对其进行修改,使其搜索所有列而不是第二列,并提供2条命令行:

(1)搜索所有列而不是第2列。

(2)仅搜索1个ID。

(3)仅搜索3个ID。

src.txt - 文本是这样的:

Ja | 11 | XXX

Jn | 19 | YYY

Jx | 21 | yyyas | SAS

也有一些行可能有更多列,就像最后一行。

谢谢!

1 个答案:

答案 0 :(得分:1)

在含有行<{p}>的src.txt中查找

Ja | 11 | xxx
Jn | 19 | yyy
nJ | 19 | yyy
Ax | 21 | Jyyas | sas
Ax | 23 | yyJas | sas

只有3行,其中一列中的值以J开头,因此写入文件dest.txt

Ja | 11 | xxx
Jn | 19 | yyy
Ax | 21 | Jyyas | sas

可以使用以下命令

findstr /R /C:"^J" /C:"\| *J" "src.txt" >"dest.txt"

^J用于查找以J开头的行,而\| *J用于查找具有以J开头的值的行,其中0或更多空格位于不同于第一列的列中列。

请注意,参数/B已被删除,否则无法使用 您的示例中的/rb在一个参数字符串中合并/R/B