メモの日々


2009年01月22日(木) [長年日記]

[howto][unix] sedで特定行の文字列を置換

sedもすぐに忘れるのでメモ。

「name=」で始まる行の後半部分を「oreore」に置換したい場合、次のようなsedスクリプトで実現できた。

/^name=/s/=.*$/=oreore/

sedのsコマンドはその前に「アドレス」を指定することで置換の対象行を絞り込めるので、それを正規表現で指定している。 実行例は次の通り。

$ echo "address=nippon\nname=tanaka\nnumber=12345" | sed '/^name=/s/=.*$/=oreore/'
address=nippon
name=oreore
number=12345

[howto][shell][net] ポートが開いているかをチェックするスクリプト

特定のポートが開いているかを調べる方法を考えたのでメモ。対象はLinux。

netstatが使えるかと思ったが、ポート番号を指定して調べるようなオプションは見当たらない。fuserコマンドが使えそうだったので、

if [ -n "`/sbin/fuser -n tcp 10000 2>&1`" ] ; then
    echo port is opened.
else
    echo port is closed.
fi

としてみた。これはTCPポート10000が開いているかを調べる例。

ただし、root以外のユーザで実行した場合は、自分以外のユーザが開いているポートは調べられないので注意。rootで実行すれば調べられる。

参考