Можно выполнить эту команду "mysql - справка", и можно найти что-то как
Default options are read from the following files in the given order:
C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf C:\Program Files\MySQL\M
ySQL Server 5.5\my.ini C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
Существует также страница руководства, говорящая о сервере MySQL, ушел
Это действительно тривиально на Perl, вы не должны ненавидеть это!
perl -i.bak -pe 's/>\n/>/' file
-i
: отредактируйте файл на месте, и создайте резервную копию оригинального файла с именем file.bak
. Если вам не нужна резервная копия, просто используйте -i -pe
вместо этого.-pe
: читайте входной файл построчно и выводите каждую строку после применения скрипта, названного -e
.s/>\n/>/
: подстановка, так же как и sed
. И вот awk
подход:
awk '{if(/>$/){printf "%s",$0}else{print}}' file2
Решение perl
:
$ perl -pe 's/(?<=>)\n//'
Объяснение
s///
используется для подстановки строк.(?<=>)
- шаблон lookbehind.\n
совпадает с новой строкой.Весь шаблон значений удаляет все новые строки, перед которыми >
.
Вы должны иметь возможность использовать sed
с командой N
, но хитрость заключается в том, чтобы удалять одну строку из пространства шаблона каждый раз, когда вы добавляете другую (так, чтобы пространство шаблона всегда содержало только 2 последовательные строки, вместо того, чтобы пытаться читать во всем файле) - попробуйте
sed ':a;$!N;s/>\n/>/;P;D;ba'
EDIT: после повторного прочтения Питериса Круминса Известного Sed One-Liners Explained я считаю, что лучшим решением sed
было бы
sed -e :a -e '/>$/N; s/\n//; ta'
, которое добавляет следующую линию только в том случае, если она уже сделала >
совпадение в конце, и должно условно зацикливаться обратно, чтобы обрабатывать случай последовательных совпадений линий (это 39 Крумина). Если строка заканчивается обратной косой чертой "\", добавьте строку к следующей, за исключением замены >
на \
в качестве соединительного символа, и того факта, что соединительный символ сохраняется в выводе).
Как насчет этого:
sed ':loop
/>$/ { N
s/\n//
b loop
}' file
Для GNU sed можно также попробовать добавить опцию -u
(--unbuffered
) согласно вопросу. GNU sed также доволен этим как простым одиночным лайнером:
sed ':loop />$/ { N; s/\n//; b loop }' file
Есть много способов сделать это, и большинство из них действительно хорошие, но я думаю, что этот мой любимый:
tr '>\n' '\n>' | sed 's/^>*//;H;/./!d;x;y/\n>/>\n/'
Или даже:
tr '>\n' '\n>' | sed 's/^>*//' | tr '\n>' '>\n'
sed
не предоставляет способа испускать выход без конечной новой строки. Ваш подход, использующий N
, в принципе работает, но сохраняет в памяти неполные строки, и поэтому может не сработать, если строки станут слишком длинными (имплантации успокоительного типа обычно не предназначены для работы с очень длинными строками).
Вместо этого можно использовать awk.
awk '{if (/<$/) printf "%s", $0; else print}'
Альтернативным подходом является использование tr
для замены символа новой строки на "скучный", часто встречающийся символ. Здесь может сработать пробел - выберите символ, который имеет тенденцию появляться в каждой строке или, по крайней мере, большую часть строк в ваших данных.
tr ' \n' '\n ' | sed 's/> />/g' | tr '\n ' ' \n'
В конечном итоге я использовал gsar, как описано в , этот ответ вот так:
gsar -F '-s>:x0A' '-r>'
Порядок операций, вызывающих запрос пароля с истекшим сроком действия:
account
, на котором проверяется существование и действительность учетной записи. На этапе учетная запись
сообщает о том, что срок действия пароля истек, и сообщает об этом SSH. проверки подлинности
. Затем устанавливается сеанс входа в систему SSH и запускается этап сеанса
PAM. Все это делается SSH, и я не вижу никаких параметров SSH для настройки этого поведения. Таким образом, если вы не хотите создавать пользовательскую версию SSH и/или PAM, единственный вариант, который я вижу, это запретить PAM сообщать устаревший пароль SSH. При этом будет полностью отключена проверка паролей с истекшим сроком действия через SSH , даже если пользователь выполняет вход через SSH с паролем. Другие (не-SSH) методы входа в систему по-прежнему проверяют истечение срока действия пароля.
Текущий файл pam.d/sshd
содержит запись «включить общий счет
». Я предполагаю, что существует файл общей учетной записи
, который содержит ссылку на pam _ unix.so
. Это строка, в которой выполняется проверка пароля с истекшим сроком действия.
Вероятно, вы не хотите касаться самого файла общей учетной записи
, поскольку он используется для других методов входа в систему. Вместо этого необходимо удалить include
из файла pam.d/sshd
. Если в общем счете
помимо pam _ unix.so
есть и другие функции, их, вероятно, необходимо поместить непосредственно в pam.d/sshd
.
Наконец, помните, что это изменение безопасности вашей системы, и вы не должны просто слепо доверять мне, чтобы дать вам хороший совет. Прочитайте, как работает PAM, если вы не знакомы с ним. Некоторые стартовые места могут быть человек 7 PAM
, человек 5 pam.conf
и человек 8 pam_unix
.
Может быть...
ipcs | sed -n '
s/[^ ]* *//
/^Messages/q
/^Semaphores/cshift
/ *bob .*/!d;s///
/ /!s/./ipcrm $1 &/p
'| sh -s -- shm \-s
Удаляет строки, которые не содержат последовательности bob в качестве третьего космоса разделенного поля или , которые не имеют во втором поле Сообщения/семафоры.
Вставляет последовательность ipcrm $1 < поле 2 >
для оставшихся строк. Он прекращает ввод при совпадении Messages и заменяет Semaphores match w/ shift
. Вывод
sed
интерпретируется процессом оболочки с двумя позициями shm/-s . Таким образом, когда sed
говорит shift
, что оболочка прекращает выполнение команды ipcrm shm < field2 >
и начинает выполнение -s
в месте shms.
Я думаю, если бы вы хотели чистого решения оболочки, это подошло бы близко:
set -f; IFS='
'; for l in $(ipcs);
do IFS=\ ;set -- $l
case "$1:$2:${3#bob}" in
(-*:Sh*) a=shm;;
(-*:Se*) a=-s;;
(-*:Me*) break 2;;
(*:*:) ipcrm "$a" "$2";;
esac; done
-121--84725- как насчет использования ed?
ed -s test.txt <<< $'/fruits/s/apple/banana/g\nw'