sed удаляет все до IP-адреса хоста

Un par de enfoques extraños:

Almacena la línea más reciente que comienza con un dígito, agrégala si la línea actual no comienza con un dígito

awk '
    /^[[:digit:]]/ {if (prev) print prev; prev=$0; next} 
    {prev = prev $0} 
    END {if (prev) print prev}
' file

Invierta el archivo. Si una línea comienza con un dígito que no sea -, lea la línea siguiente y agregue la línea anterior. Invertir los resultados. Supongo que un registro se divide como máximo 1 vez

tac file | awk '/^[^[:digit:]]/ {this = $0; getline; $0 = $0 this} 1' | tac
0
11.07.2019, 18:16
2 ответа

Вы хотите

 sed -n "/$(hostname)/,\$ p" /etc/hosts
0
28.01.2020, 03:27

Основываясь на вашем примере с 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
0
28.01.2020, 03:27

Теги

Похожие вопросы