С GNU awk или mawk Вы могли сделать это как это:
awk -v RS='!\n' '!/shutdown/'
Вывод:
interface FastEthernet0/1
ip address 10.16.0.1 255.255.255.224
Вы могли сделать соответствие более точным, если Вы только ищете завершение работы в третьей строке:
awk -v RS='!\n' -v FS='\n +' '$3 !~ /shutdown/'
Можно, конечно, также использовать sed, но это более сложно.
Один подход является тем, который Вы запустили с, но собираете целую запись в пространстве хранения прежде, чем распечатать что-либо. Это работает с GNU sed:
sed -n '/^interface/,/^!/ H; 1b; /^!/ { z; x; s/^\n//g; /shutdown/!p }'
Используйте это:
user@host:~$ echo "my string to encrypt" | openssl aes-256-cbc -e -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000
a7svR6j/uAz4kY9jvWbJaUR/d5QdH5ua/vztLN7u/FE=
user@host:~$ echo "a7svR6j/uAz4kY9jvWbJaUR/d5QdH5ua/vztLN7u/FE=" | openssl aes-256-cbc -d -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000
my string to encrypt
Или вы можете использовать подстановку команд:
user@host:~$ openssl aes-256-cbc -a -K 00000000000000000000000000000000 -iv \
00000000000000000000000000000000 -in <(echo "my string to encrypt") -out encrypted.txt
как насчет
echo encrypt Me | openssl aes-256-cbc -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000
Если вас беспокоит, что ps покажет простой текст «зашифруйте меня», тогда вам лучше работать с файлом, стараясь стереть их.
Введите многострочный ввод, используйте ctrl + d для завершения. e = 'e'
очистит переменную env для конфиденциальности.
e=$(cat); echo "$e" | openssl enc -aes-256-cbc -e -a; e='e'