我有一个大的文本文件,我做了一些搜索和提取今天SED的帮助。 我目前的SED scrifp搜索一个patters /串,并提取模式/串到下一个空间中的所有信息。查找字符串,并得到一切从字符串到下一个空间
我刚才discoverd PowerShell和喜欢它。
我曾尝试没有成功复制相同的脚本在PowerShell中。 enyone有一个建议如何做到这一点?从我目前的文本文件(hw.txt)
例子:
i1231 Cisco_1800 *IP=10.10.10.1 *SV=0 *NM=Router_1 *[email protected]_1
i2385 Cisco_2960 *NM=switch_7 *CM=workstation_switch *IP=192.168.5.97 *SV=1
i8473 Cisco_PIX *IP=10.10.10.9 *SV=0 *NM=PIX_2 *CM=Int_Firewall
我目前的SED脚本提取* IP =和* NM =:
sed -ne "s/^.*\*IP=\([^ ]*\) .*\*NM=\([^ ]*\) .*$/\1 \2/p" -ne "s/^.*\*NM=\([^ ] *\) .*\*IP=\([^ ]*\) .*$/\2 \1/p" db.tmp > hosts
与此脚本的结果将来:
10.10.10.1 Router_1
192.168.5.97 switch_7
10.10.10.9 PIX_2
我试图用这个作为一个简单的方法来获得正确的语法:
Select-String ".*\*nm=\([^ ]*\)" hw.txt
/皮尔
你在翻译的正则表达式的问题是,在'sed'你需要逃避括号将它们从字面括号改变周围捕获的括号(同样用括号和括号,顺便说一句),而不是其他方式在.NET和最其他正则表达式。但是由于PowerShell允许比正则表达式的直接转换更优雅的解决方案,我会将其作为答案发布。 –