[lupo@asus-x201e tmp]$ sed '/ISC_PASSWORD/!d;s/\(.*ISC_PASSWORD=\"\)\(.*\)\("\ .*\)/\2/' 123.txt
Бэкслеш не на месте?
[lupo@asus-x201e tmp]$ sed '/ISC_PASSWORD/!d;s/\(.*ISC_PASSWORD=\"\)\(.*\)\("\ .*\)/\2/' 123.txt
Бэкслеш не на месте?
Бэкслеш не на месте?
Да, после него пробел. По уму бы надо, чтобы искал двойные кавычки, после которых любое количество пробелов или табуляций, либо конец строки.
P.S. Я не программист.
P.S.S. Придёт drBatty всех меня с моими попытками писать на sed морально унизит. :(
P.S.S.S.
Все эти «изыскания» хороши, если формат целевого файла известен и постоянен.
P.S.S.S.S. Тем более, ТС вроде бы и так доволен :D
Да, после него пробел.
Не, я про то, что он должен быть перед кавычками.
По уму бы надо, чтобы искал двойные кавычки, после которых любое количество пробелов или табуляций, либо конец строки.
$ grep -Po 'ISC_PASSWORD=\"\K.+?(?=\"(\s|$))' 123.txtP.S.S.S.S. Тем более, ТС вроде бы и так доволен
Ну, тогда мы тем более имеем полное право помериться... регэкспами! :D
Не, я про то, что он должен быть перед кавычками.
Вроде не надо, и так работает.
[console][lupo@asus-x201e tmp]$ sed '/ISC_PASSWORD/!d;s/\(.*ISC_PASSWORD=\"\)\(.*\)\("\ .*\)/\2/' 123.txt
aaa"bbb[/console]
Ну, тогда мы тем более имеем полное право помериться... регэкспами! ag
Увы, в данном случае «ваше кунг-фу сильнее моего» :'(
Вроде не надо, и так работает.
Тогда и перед первой двойной кавычкой убрать?
Увы, в данном случае «ваше кунг-фу сильнее моего»
Не, ну мы ж не ради выяснения, чей кунг-фу эмм.. сильнее)
По уму бы надо, чтобы искал двойные кавычки, после которых любое количество пробелов или табуляций, либо конец строки.
а если в пароле пробел после кавычек...
да и по уму не надо пароль открытым текстом хранить...
Я про то, что регулярка универсальна по отношению к формату файла.
такой не бывает ;)
на вскидку пара моментов, где оно может сломаться ИРЛ
1. не учтено, что строка может быть закоментирована
2. не учтены пробелы до/после равно...
3. может быть ещё переменная DEFAULT_ISC_PASSWORD
P.S.S. Придёт drBatty всех меня с моими попытками писать на sed морально унизит.
я могу попробовать это сделать... правда тогда он уже будет придираться ко мне, что я это не правильно делаю... да и не получится у меня... т.е. я могу просто выкинуть шлак и показать как это втрое короче записать:
sed -ne 's/ISC_PASSWORD="\(.*\)"/\1/p'
я могу попробовать это сделать... правда тогда он уже будет придираться ко мне, что я это не правильно делаю... да и не получится у меня... т.е. я могу просто выкинуть шлак и показать как это втрое короче записать:
sed -ne 's/ISC_PASSWORD="\(.*\)"/\1/p'
Не сейчас...
[lupo@asus-x201e tmp]$ cat 123.txt
qwert 123
asd ISC_PASSWORD="aaabbb" dsa
123 qwerty
[lupo@asus-x201e tmp]$ sed -ne 's/ISC_PASSWORD="\(.*\)"/\1/p' 123.txt
asd aaabbb dsased -ne 's/.*ISC_PASSWORD="\(.*\)".*/\1/p' 123.txt
P.S. Тоже не работает для всех случаев.
P.S. Тоже не работает для всех случаев.
что бы работало для всех такого не бывает, учитывая, что мы вообще не знаем о каком формате конфигов идёт речь...
вот так будет работать для большинства bash-подобных вроде make.conf:
sed -ne 's/^\s*ISC_PASSWORD="\(.*\)"\s*\(#.*\)\?$/\1/p'
Вот я задал тему для мозгового штурма =) Поставьте себе firebird2.5 и увидите файл /etc/firebird/25/SYSDBA.Password И пароль там как не странно в открытом виде. Права правда на файл не помню какие =)