sed はホスト IP アドレスより前のすべてを削除します。

sed はホスト IP アドレスより前のすべてを削除します。

localhostのIPアドレスの前の各行を削除したいです。以下を介してホストのIPアドレスを正常に照会しました。

grep `hostname` /etc/hosts | awk '{print $1}'

これで、sedを介してこれを達成する方法を探しています。はい(動作しません):

cat file | sed '/echo `grep `hostname` /etc/hosts | awk '{print $1}'`/,$!d'

私のコマンドをsedにどのように含めることができますか?

答え1

欲しい

 sed -n "/$(hostname)/,\$ p" /etc/hosts

答え2

あなたのawkの例に基づいて望む解決策は次のとおりです。

sed -ne "s/[[:blank:]]*$(hostname)$//p" /etc/hosts

$ hostname
foo.example.com
$ grep $(hostname) /etc/hosts
10.16.161.131         foo.example.com
$ sed -ne "s/[[:blank:]]*$(hostname)$//p" /etc/hosts
10.16.161.131

grepところで、パイピングに関連するコマンドのリストを作成するたびに、次のことを行いますawk

$ awk "/$(hostname)/"'{print $1}' /etc/hosts
10.16.161.131

関連情報