как эмулировать, “заменяют b b” с sed?

authpriv – несистемные сообщения авторизации

auth- связанные с аутентификацией и авторизацией команды

ранее LOG_AUTHPRIV для сокрытия чувствительных сообщений журнала в защищенном файле, например, /var/log/auth.log. тогда как LOG_AUTH на Linux обычно не настраивается с ограниченным доступом, тогда как LOG_AUTHPRIV . LOG_AUTH вместо того, чтобы использовать что-то универсальное как LOG_USER.

Рекомендуется использовать LOG_AUTHPRIV для подлинных журналов, которые имеют существенный риск записи чьего-то пароля

GNU C руководство Библиотеки не документирует LOG_AUTHPRIV вообще и просто имеет LOG_AUTH, таким образом, страницы справочника Linux не получают его оттуда.

теперь от man syslog я добрался LOG_AUTH security/authorization messages (DEPRECATED Use LOG_AUTHPRIV instead)

но большая часть кода, который я видел, имеет что-то как

 #ifndef LOG_AUTHPRIV
 #define LOG_AUTHPRIV LOG_AUTH
 #endif`

таким образом, это до Вас для решения который использовать

4
10.11.2013, 14:38
3 ответа

Я использовал бы, переводят TR команды, например.

tr ab ba < input_file
13
27.01.2020, 20:44
  • 1
    благодарит X Tian. Есть ли какие-либо преимущества использования 'TR ab ba' по 'замене b b a'? –  Mitten 10.11.2013, 16:13
  • 2
    @Mitten Вы - тот, который конкретно попросил нет replace решение, Вы говорите нам :). –  terdon♦ 10.11.2013, 17:33
  • 3
    Преимущество для меня состоит в том, что я имею команду TR и знаю это, но не команда замены. Если я ответил Вам, вопрос мог Вы отмечать его. спасибо –  X Tian 10.11.2013, 19:23

Если Вы только хотите заменить отдельные символы, не более длинные строки, использовать

sed -e 'y/ab/ba/'

или эквивалент tr команда из ответа X Tian. Для произвольных строк необходимо работать усерднее:

Если существует какой-либо символ, который, конечно, не происходит во входе, такой как # (даже управляющий символ сделает), можно использовать что-то как

sed -e 's/a/#/g;s/b/a/g;s/#/b/g;'

С другой стороны, можно сделать некоторые приемы с добавлением префикса:

sed -e '
s/a/xa/g;
s/b/xb/g;
s/xa/yb/g;
s/xb/ya/g;
s/ya/a/g;
s/yb/b/g;
'

это: снабдите префиксом каждый a и b с x (что означает: еще измененный), замена xa yb и наоборот (где y средства: измененный), и удаляют все префиксы.

12
27.01.2020, 20:44
  • 1
    Хороший прием добавления префикса! –  Wildcard 04.05.2016, 03:55

Если у Вас есть запасной символ, можно сделать предложение Uwe.

Если действительно только необходимо заменить отдельный символ, и Вам не обязательно нужно sed, использовать tr как предложено XTian.

Если Вам не нужно sed и Вы могли бы заменить более длинные последовательности, не нуждаясь в запасном символе, Вы могли бы пойти с чем-то как этот:

perl -le '%ex=(a=>"b",b=>"a"); $keys=join("|",keys(%ex)); $text="abba"; $text=~s/$keys/$ex{$&}/eg; print $text'

или

ruby -e 'ex={"a"=>"b","b"=>"a"}; puts "abba".gsub(/(#{ex.keys.join("|")})/,ex)'
2
27.01.2020, 20:44

Теги

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