Вам следует:
#
перед strict_chains
#
перед dynamic_chains
(socks5 127.0.0.1 9050)
без ()
сразу под socks4 127.0.0.1 9050)
и сохранить файл конфигурации для эти изменения
На самом деле есть очень удобный способ справиться с этим сценарием в обычном sed
: поменять местами новую строку с каким-нибудь обычным символом, скажем, _, затем выполнить [^_] и затем вернуться назад. Я хотел опубликовать решение возникшей проблемы, но был слишком ленив, чтобы опубликовать его, но теперь позвольте мне разместить его здесь:
sed -e '
/./!b
:loop
$q; N
/\n$/bloop
h
/\ncreate table/!{
s/\(.*\)\n.*/\1/p
g;s/.*\(\n\)/\1/;D
}
g
y/\n_/_\n/
s/^[^_]*/test/
y/\n_/_\n/
' input.data
Возможно, я не правильно понял ваш вопрос, но рискну ответить.
Если вы хотите сопоставить все, кроме новой строки, простая точка регулярного выражения .
делает именно это: соответствует любому символу, кроме новых строк.
Давайте попробуем это с не gnu sed:
$ cat file5
home
help
variables
compatibility
$ sed 's/./_/g' file5
____
____
_________
_____________
$ echo "one
two
three
four" |sed 's/./_/g'
___
___
_____
____
Кстати, ваш самый первый пример sed:
echo "one
two" | sed 'N;s/\n/_/g'
соответствует только следующей новой строке, а не каждой новой строке:
$ echo "one
> two
> three
> four" |sed 'N;s/\n/_/g'
one_two
three_four
Вы можете использовать [[:alnum:][:punct:][:blank:]]
скобочное выражение:
echo "one
two" | sed 'N;s/[[:alnum:][:punct:][:blank:]]/_/g'
Выходы:
___
___
[:alnum:]
соответствует всем буквенно-цифровым символам, [:punct:]
соответствует всем знакам препинания и [:blank:]
соответствует всем горизонтальным пробелам. Все вертикальные пробелы не учитываются и не сопоставляются.