私は大きなテキストファイルを持っており、今日はSEDの助けを借りて検索と抽出を行っています。 現在のSED scrifpはパターン/文字列を検索し、パターン/文字列からすべての情報を次のスペースに抽出します。文字列を検索して文字列から次の文字列までのすべてを取得
私はただパワーシェルを発見し、それを愛しています。
私は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
/ピエール
正規表現を翻訳する際の問題は、括弧をエスケープして、リテラルの括弧から括弧(括弧と括弧で囲まれたもの、btw)をキャプチャすることです。他の正規表現のフレーバー。しかし、PowerShellは正規表現の文字通りの翻訳よりもさらに洗練されたソリューションを提供しているので、私はそれを答えとして投稿します。 –