我环顾四周,没有找到这种特定格式,请伸出这里。
我有一个有趣的格式文件。我正在尝试制定一个正则表达式来替换文本。
所以我有一个格式如下的文件。
我唯一感兴趣的部分是[ash01],[ask02]等模块。
我想获取整个块,仅更改FTP服务器名称,然后将文件写回。 之前:
[ash01] FTP Server Name = ftp-server-01 ftp parameter1 = C:\scripts ftp parameter2 = -t
之后:
[ash01] FTP Server Name = ftp-server-05 ftp parameter1 = C:\scripts ftp parameter2 = -t
文件本身在所讨论的块的上方和下方都有一些未格式化的数据,然后它开始进入如下所示的组
Unformatted data...... [blah] [ash01] FTP Server Name = ftp-server-01 ftp parameter1 = C:\scripts ftp parameter2 = -t [ash02] FTP Server Name = ftp-server-02 ftp parameter1 = C:\scripts ftp parameter2 = -t [ash03] FTP Server Name = ftp-server-03 ftp parameter1 = C:\scripts ftp parameter2 = -t [blah] unformatted data.....
答案 0 :(得分:0)
那只是在PowerShell中使用positive lookbehind
的一个衬里(Get-Content .\yourfile.txt -raw) -replace "(?SMI)(?<=^\[ash01\]`r?`nFTP Server Name *= *).*?$","ftp-server-05"| Set-Content .\newfile.txt
[]
必须以反斜杠转义,以免被解释为范围。
(?SMI)
指示RegEx匹配^*
行的开头/结尾和多行,并忽略大小写。
总而言之,替换到行尾的所有文本 IF
文本的开头是[ash01]
,cr / lf,FTP Server Name
,任意数量的空格,等号,任意数量的空格。