Заменить символы после совпадения с sed

DNS-сервером по умолчанию, используемым proxychains, является 4.2.2.2. Чтобы изменить DNS-сервер, вы должны отредактировать файл конфигурации /usr/lib/proxychains3/proxyresolv.

cat /usr/lib/proxychains3/proxyresolv:

#!/bin/sh
# This script is called by proxychains to resolve DNS names

# DNS server used to resolve names
DNS_SERVER=${PROXYRESOLV_DNS:-4.2.2.2}


if [ $# = 0 ] ; then
    echo "  usage:"
    echo "      proxyresolv <hostname> "
    exit
fi


export LD_PRELOAD=libproxychains.so.3
dig $1 @$DNS_SERVER +tcp | awk '/A.+[0-9]+\.[0-9]+\.[0-9]/{print $5;}'
0
16.09.2019, 20:13
2 ответа

Возможны различные подходы.

Условный цикл, который заменяет один пробел за раз:

sed -e :1 -e 's/\(\].*\) /\1:/; t1'

Сохранение префикса, удаление, замена, восстановление префикса:

sed '/\] /{ s//&\
/; h; s/.*\n//; s/ /:/g; H; g; s/\n.*\n//;}'

Ни один из них не будет выполнять подстановку, если входные данные не содержат "] ".

3
28.01.2020, 02:22

можно использовать

echo '172.16.1.5] "80 EE 73 2F 0B 40' | sed -r 's/ +/:/g;s/\]:/\] /g'

иметь

172.16.1.5] "80:EE:73:2F:0B:40
1
28.01.2020, 02:22

Теги

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