bashでのif文内正規表現についての質問です。
IPアドレスを正規表現にてマッチングさせたいのですが実現できなく困っています。
たとえば192.168.1.の1から128を引っ掛けたいのですがどうすれば実現できますか?
今は下記のように書いていますが、これではだめみたいです。
ARCHKIP=`netstat -rn | awk '{ print $1 }'`
for i in `echo $ARCHKIP`
do
if [[ $i = 192.168.1.[1-128] ]];then
echo "OK"
fi
done
わかる方お教えください。
No.2ベストアンサー
- 回答日時:
文字クラスに誤解があると思います。
[1-128] の文字クラスは、1から 128 までにマッチするのではなく、1, 2, 8 のいずれかの文字にマッチします。- の両側に複数文字をを指定することはできません。次の
正規表現を試してみてください。(なお、見苦しくなるのでピリオドはエスケープしていません。)
netstat -rn | awk '{ print $1 }' | grep -E "192.168.1.([1-9][0-9]?|1([01][0-9]|2[0-8]))$"
No.3
- 回答日時:
詳しい説明をし出すときりがないですが、bashの機能では正規表現は使えません。
ファイルマッチ( ? が任意の一文字、* が任意の文字列、など)が使えます。これを使うと、
for i in $ARCHKIP
do
case $i in
192.168.1.[1-9]|192.168.1.[1-9][0-9]|192.168.1.1[01][0-9]|192.168.1.12[0-8]) echo OK ;;
esac
done
あるいは、前半後半を分割して、
for i in $ARCHKIP
do if [[ ${i:0:10} = 192.168.1. && ${i:10} -ge 1 && ${i:10} -le 128 ]]
then echo OK
fi
done
遅くなりましたが、丁寧にありがとうございました!
一行にまとまっててわかりやすいです。
すべては私の誤解、あらためて恥ずかしーです。
No.1
- 回答日時:
こんにちは。
bash で上記のような正規表現ができるかどうかは、わかりません。
しかし、
以下で同じことにはなりませんでしょうか?
netstat -rn | awk '{ print $1 }' | grep "192.168.1.[1-128]"
この回答への補足
回答ありがとうございます。
上記の実行結果では残念ながらだめでした。
netstat -rn | awk '{ print $1 }' | grep -E "192.168.1.[1-128]"
でも192.168.1.192などが引っかかってしまうためNGなようなのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) awkの正規表現での最左最短マッチング 3 2022/07/01 00:10
- PHP preg_matchで Warning: Undefined variableが出ます 1 2022/11/15 17:06
- UNIX・Linux Linuxのbash環境下です。 1 2022/11/27 12:31
- UNIX・Linux Debianでシェルスクリプトにおいて正規表現の条件文で[[,]]が使えないので困ってます 2 2023/01/20 09:27
- PHP PHP MySql ページング 2 2022/09/20 06:38
- UNIX・Linux Linuxの実行結果を修正したいです。 2 2022/11/23 08:32
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- UNIX・Linux 次のif文について意味を教えてください。 1 2022/11/27 16:55
- Java JAVAの1つの正規表現で上記Textすべてと合致する正規表現を教えてください。 4 2022/11/06 08:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
Linux Mint 日本語入力できなく...
-
ubuntuのシャットダウンが進ま...
-
AWSでSSH接続をしたいのですが...
-
テキストファイルをページ番号...
-
2TBのUSBメモリを2000円ほどで...
-
Ubuntuで数字だけのユーザーア...
-
Linux のシェルスクリプトの強...
-
tarで纏める際に、複数場外した...
-
ubuntuで デイスク/deb/loopと...
-
ssl_error_logのエラー内容(AH...
-
ログにserver reached MaxReque...
-
lubuntuのインストールが終わり...
-
e4defragコマンドでデフラグ
-
[Linux初心者]Ubuntu22.04.3LTS...
-
Ubuntu系とCentOS系の違いはな...
-
Linuxのパーティション番号の変...
-
Windowsのローカルディレクトリ...
-
プログラミングPC、LinuxのOSパ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
bashでシングルクォート内の変...
-
ubuntu(linux)のシャットダウン...
-
AWSでSSH接続をしたいのですが...
-
Linuxのパーティション番号の変...
-
ubuntuで デイスク/deb/loopと...
-
自作のウェブサイトを友人に見...
-
ubuntuのシャットダウンが進ま...
-
[Linux初心者]Ubuntu22.04.3LTS...
-
Ubuntu系とCentOS系の違いはな...
-
Ubuntu on Xorgのログインについて
-
Windowsのローカルディレクトリ...
-
tarで纏める際に、複数場外した...
-
Linux のシェルスクリプトの強...
-
Ubuntuで数字だけのユーザーア...
-
linuxサーバーのキャッシュをク...
-
shellscript内のコマンドを、su...
-
ssl_request_logの必要性について
-
ubuntuのサーバー(virtual box)...
-
Kali Linuxで起動できない - Mi...
-
ホストオンリーアダプタで接続...
おすすめ情報