0
IPポートをregexpにawkコマンドに渡すための簡単なbashスクリプトをコーディングしています。私はここでのみローカルの宛先にポート用bashシェルスクリプトを使って動的正規表現を渡す
を探していますコードです:ここでは
#!/bin/bash
s=$1
port="/[^0-9]$s$/"
netstat -numeric | awk -v pat="$port" '$6 == "ESTABLISHED" && $4 ~ pat {print}'
は、データの一例です。
tcp 0 0 1.9.1.1:23 1.9.2.1:54156 ESTABLISHED
tcp 0 0 1.9.1.1:23 1.9.2.4:51376 ESTABLISHED
tcp 0 0 1.9.1.1:23 1.9.2.1:53299 ESTABLISHED
tcp 0 0 1.9.1.1:23 1.9.2.1:64695 ESTABLISHED
tcp 0 0 1.9.1.1:53086 1.9.1.8:23 ESTABLISHED
tcp 0 0 1.9.1.1:23 1.9.2.1:53296 ESTABLISHED
スクリプトを実行すると、何も返されません。
私はそれを手動で実行すると、それは次の値を返します。
netstat -numeric | awk '$6 == "ESTABLISHED" && $4 ~ /[^0-9]23$/ {print}'
tcp 0 0 1.9.1.1:23 1.9.2.1:54156 ESTABLISHED
tcp 0 0 1.9.1.1:23 1.9.2.4:51376 ESTABLISHED
tcp 0 0 1.9.1.1:23 1.9.2.1:53299 ESTABLISHED
tcp 0 0 1.9.1.1:23 1.9.2.1:64695 ESTABLISHED
tcp 0 0 1.9.1.1:23 1.9.2.1:53296 ESTABLISHED
任意の提案は大歓迎です。
したがって、/.../が暗示されます。助けのためのthx – Drewber49er
いいえ、彼らは暗黙のうちに、私が再び言ったことを読んでいない。 '/.../'は**一定の正規表現**の区切り文字です。あなたは動的正規表現を使用している定数正規表現を使用しておらず、変数内の文字列として正規表現を保存しています。文字列内で '/'は単なるリテラル '/'文字です。 '/ foo /'で '/'は正規表現の一部ではなく、正規表現の周りの区切り文字で正規表現の定数として定義します。代わりに '' 'デリミタを使うことができます(' $ 0〜 "foo" ')が、正規表現を動的正規表現にします。 –