[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:09227] Re: telnet at dhcpcd



ごちょう@新潟大学です.

On Oct, 20 1998 19:14:50 +0900, Kazuhisa Ishii wrote:
> HWADDR=`/sbin/ifconfig $DEVICE | sed -n -e 's/.*addr \(.*\)/\1/p'`
> としてPCカードのMACアドレスを取得している部分があるのですが、
> Debianのsedでは、この記述によって、
> MACアドレスの後ろに、スペースが入ったものが出力されるようです。
私も sed の挙動(というか正規表現)については
詳しくないので,外していたら申し訳ないのですが,
  $ ifconfig eth0 > test
とやると,この段階で既に MAC アドレスの後ろに
スペースがついていることが確認されました.

> ifconfig $DEVICE | sed -n -e 's/.*addr \(.*\)/\1/p' > test
                               ^^^^^^^^^^^^^^^^^^^^^^
この正規表現では,
  ".*addr \(.*\)"という条件を満たした場合は,
  "addr "までの文字列を削除して,
  それ以降の文字列を表示する.
という意味になっていると思われますが,
スペース" "であっても文字ですので,
"addr "以降の文字列にスペースが含まれていようがいまいが
表示しているのではないかと考えました.
  $ echo "aaa bbb ccc    " | sed -n -e 's/.*cc \(.*\)/\1/p' > test
などとやることで,試せると思います.

なので,
> sedについては、よく知らないのですが、
> これはこれで正しい動きなのでしょうか?
正しいのかも知れません.
また,GNU sed 以外に,SunOS5.6 の
  /usr/bin/sed
  /usr/xpg4/bin/sed
で
  $ echo "aaa bbb ccc    " | sed -n -e 's/.*cc \(.*\)/\1/p' > test
とやっても,やはり最後のスペースは表示されました.

以上のことに間違いが含まれていたら,誰か修正して下さい.
-- 
ごちょう てつや <ushi@xxxxxxxxxxxxxxxxxxxxxx>