Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell-如何从文本文件中获取前几行?_Powershell_Text_Match_Lines - Fatal编程技术网

Powershell-如何从文本文件中获取前几行?

Powershell-如何从文本文件中获取前几行?,powershell,text,match,lines,Powershell,Text,Match,Lines,我有一个文本文件,包含数百行包含数据库信息的文本 我试图为任何35GB的数据库提取DatabaseIds 我想使用Powershell查询该文件,并生成一个包含所有匹配数据库的文本文件 所以本质上,我想扫描文件,找到一个DatabaseSize,它是35,然后从前面的3行中提取相应的DatabaseId 我已经在网上找遍了,但似乎找不到任何可以做到这一点的东西 文本文件提取示例: ServerId = VMlinux-b71655e1 DatabaseId = db-ecb2e784 Statu

我有一个文本文件,包含数百行包含数据库信息的文本

我试图为任何35GB的数据库提取
DatabaseId
s

我想使用Powershell查询该文件,并生成一个包含所有匹配数据库的文本文件

所以本质上,我想扫描文件,找到一个
DatabaseSize
,它是35,然后从前面的3行中提取相应的
DatabaseId

我已经在网上找遍了,但似乎找不到任何可以做到这一点的东西

文本文件提取示例:

ServerId = VMlinux-b71655e1
DatabaseId = db-ecb2e784
Status = completed
LocationId = 344067960796
DatabaseSize = 30

ServerId = VMlinux-0db8d45b
DatabaseId = db-cea2f7a6
Status = completed
LocationId = 344067960796
DatabaseSize = 35

ServerId = VMlinux-c5388693
DatabaseId = db-9a421bf2
Status = completed
LocationId = 344067960796
DatabaseSize = 8

etc

试试这样的方法:

(( GC myfile.txt | 
   Select-String 'DatabaseSize = 35' -Context 3 ).context.precontext)[0]
在多个匹配的情况下:

(GC myfile.txt | 
SELECT-STRING 'DATABASESIZE = 35' -Context 3 ) | % { ($_.context.precontext)[0] }

我只是想补充一点,我一直在用Select String来识别行号,但没有找到一种方法来提取给定行号的数据:
$matches=Select String“DatabaseSize=35”c:\databases.txt$matches | Select LineNumber,line
谢谢-看起来很有希望,然而,它似乎只给了我一个结果。我是否需要执行foreach etc来获得所有结果?另一种方法是:
get Content.\myfile.txt-ReadCount 6 | foreach{if($[4]-match'DatabaseSize=([0-9]{1,3}){if($matches[1]-eq 35){$[1]}}
@user2390040很高兴为您提供帮助@davor您在
数据库大小=
之后缺少一个空格以正确匹配它