regex - 使用 powershell/regex 选择块文本(第 vty 0 4 行)
问题描述
line vty 0 4
我需要一个可以从 cisco 配置文本文件中提取该部分的脚本。任何人都可以推荐一种使用 powershell/regex 的方法吗?
例如:我需要将以下块测试拉出并输出到文件,或者只是屏幕输出。
line con 0
exec-timeout 10 0
timeout login response 30
privilege level 1
special-character-bits 7
exec
line vty 0 4 >STARING AT THIS LINE
access-class VTY-ACL in
motd-banner
exec-banner
exec-timeout 10 0
timeout login response 30
privilege level 1
logging synchronous >ENDING AT THIS LINE
line vty 5 15
access-class VTY-ACL in
motd-banner
exec-banner
exec-timeout 10 0
timeout login response 30
privilege level 1
logging synchronous
解决方案
如果文件在当前路径中命名为“file.text”:
Get-Content .\file.text -Raw |Select-String '(?ms)^line vty 0 4.*(?=^\w)' |Foreach {$_.Matches.Value}
或使用别名对其进行高尔夫球编码:
cat .\file.text -Raw|sls '(?ms)^line vty 0 4.*(?=^\w)'|%{$_.Matches.Value}
(?ms)
模式中的设置m
和s
修饰符
m 修饰符: m多行。
使 ^ 和 $ 匹配每行的开始/结束(不仅是字符串的开始/结束)
s 修饰符: s单行。
点匹配换行符
因此,.*
它将匹配任何内容,直到正向超前 (?=^\w)
检测到新行后跟一个单词字符。
请注意,-Allmatches
省略了 Select-String 的开关,因为预计此类文件将仅包含一个line vty 0 4
部分。
推荐阅读
- android - Hyper-V 已禁用。我无法运行 intelhaxm-android.exe - 错误:x86 仿真当前需要硬件加速
- html - 带有可扩展页眉和页脚以及滚动体的 Flexbox
- gruntjs - 运行 grunt jshint 时出现错误
- r - 网格上的 ggplot 与 R 中的 grobList
- java - 如何禁用 java 1.8.181 版本的端点识别
- javascript - HTML实现MaxLength但忽略小数
- scala - 如何强制使用特定 jar 中的类并在 build.sbt 中排除另一个 jar 的相同类?
- javascript - tampermonkey 和 javascript 有问题
- ios - Swift 4:删除核心数据中的对象
- javascript - 如何访问实例化为参数的对象?