awk
:
awk '
function mysub(str) {
if (str) gsub(/line/, "newline", str); return str
}
BEGIN {
OFS=FS="("
}
NF>1 {
if (FS=="(") {
print $1,mysub($2); OFS=FS=")"
} else {
print mysub($1),$2; OFS=FS="("
}
next
}
{
print FS=="(" ? $0 : mysub($0)
}' /path/to/input
Пользовательская функция mysub
- это то место, где вы выполняете замену, которую вы хочу сделать между скобками. Предполагается, что скобки не вложены.
Есть два состояния, внутри и вне скобок.
OFS = FS = "("
). NF> 1
) и…
FS == "("
), все до и после разделителя полей выводится (с разделителем вывода между ними), но последний проходит через функцию замены ( mysub ($ 2)
), а затем режим меняется изменив разделители ввода и вывода ( OFS = FS = ")"
), else
), вы перейдете в внутренний режим, и все до и после выводится разделитель полей, но на этот раз он проходит через функцию замены ( mysub ($ 1)
), и здесь также меняется режим. FS == "("
) или иным образом проходит через функцию замены ( mysub ($ 0)
]). awk 'function m(s){gsub(/line/,"newline",s);return s}BEGIN{OFS=FS="("}NF>1{if(FS=="("){print $1,m($2);OFS=FS=")"}else{print m($1),$2;OFS=FS="("}next}{print FS=="("?$0:m($0)}' /path/to/input
Мои более сложные тестовые данные (которые некоторые однострочные решения здесь не работают с):
line96
line97 myFunction (line0
line1
line2
line3
line4) line98
line99
Вывод для него:
line96
line97 myFunction (newline0
newline1
newline2
newline3
newline4) line98
line99
{{ 1}} Вариант, в котором вместо этого удаляется все, что находится в круглых скобках (кроме первого и последнего разрывов строк):
awk '
BEGIN {
OFS=FS="("
}
NF>1 {
if (FS=="(") {
print $1,""; OFS=FS=")"
} else {
print "",$2; OFS=FS="("
}
next
}
FS=="("' /path/to/input
Вывод для этого :
line96
line97 myFunction (
) line98
line99
Что ж, могло случиться так, что у зеркала были проблемы, иногда такое случается, как это обсуждение Reddit между пользователями, у которых были ошибки в зеркалах
и вы должны сообщить, когда это произойдет (скрыто), и они сразу же доберутся до вас.
Вы можете изменить зеркала в вашем /etc/apt/sources.list на зеркала ближе к тому месту, где вы живете, с этого сайта https://www.debian.org/mirror/list .
например:
deb http://ftp.us.debian.org/debian/ stretch main
.
можно изменить на
deb ftp.br.debian.org/debian stretch main
.
Если я живу в Бразилии или, может быть, Бразилия сейчас быстрее.
Или вы можете просто перейти на httpredir
mirrors, которое просто выберет для вас лучшее зеркало
deb http://httpredir.debian.org/debian stretch main
.
И вы можете прочитать здесь больше примеров https://wiki.debian.org/SourcesList