サーバーでハウスキーピングタスクを実行するための小さなスクリプトを作成しています。
ethX の X だけを取得したいのですが、
echo `grep -m1 -oE "eth[0-9]*" /etc/network/interfaces | grep -oE [0-9]*`
これは機能しますが、誰かがそれを実行できる1回限りのコマンドを知っているかどうか疑問に思っていました。つまり、たとえばroom456の単語を取り、番号を吐き出すだけの通常のエクスプレッションです。
サーバーでハウスキーピングタスクを実行するための小さなスクリプトを作成しています。
ethX の X だけを取得したいのですが、
echo `grep -m1 -oE "eth[0-9]*" /etc/network/interfaces | grep -oE [0-9]*`
これは機能しますが、誰かがそれを実行できる1回限りのコマンドを知っているかどうか疑問に思っていました。つまり、たとえばroom456の単語を取り、番号を吐き出すだけの通常のエクスプレッションです。
正の後読みを使用して、前に が続く任意の数字文字列に一致させますeth
。
$ cat file
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
$ grep -Po '(?<=eth)[0-9]+' file
0
1
使用sed
:
sed 's/^eth\([0-9]\+\):.*$/\1/g' /etc/network/interfaces