我的输入文件中有两行。
示例输入文件(文件名 - file.txt)
String1 value 'string2'
..
..
..
Call string1
期望的输出:
File.txt
。 (即文件名)
基本上我想要文件名 - 如果它包含这两行
1)string1 value 'string2'
2)call string1
1)和2)是两条不同的线,中间可能有很多条线。
P.S。 a)我正在搜索'string2'
。 'string1'
可以是任意8个字符。我不知道'string1'
b)'string2'
将始终以单引号(')
c)'string2'
始终以字符串'value'
由于
答案 0 :(得分:1)
试试这个......
gc input.txt |?{$_ -match '.*value ''(.*)'''}|%{$matches[1]}
答案 1 :(得分:0)
以下脚本遍历当前目录中的每个文件,并查找内容中包含2行的文件。不确定这是否符合您的情况,但要根据您的环境进行自定义并不困难。
dir *.* | foreach {if (get-content $_| Select-String -pattern "^[A-Za-z]{8} value 'string2'","Call string1") {"$_"}}
输出(在我的实验室中)是:
C:\Documents\ManualScripts\test.txt
test.txt是我为测试此脚本而创建的文件。内容如下:
abcdefgh value 'string2'
hello world
I love church
I love Jesus
call string1
Alibaba, sesame open the door!
@dazedandconfused我相信你的脚本返回“String1”,它是第二行的一部分,而不是他/她请求的文件名。除了你的脚本没有反映他/她的另一个需求:“'string1'可以是任何8个字符”。如果我错了,请原谅我。