Извлечение сложной строки внутри круглых скобок в Linux Bash

Está utilizando un certificado -autofirmado. ¿Por qué no agrega la CA a su paquete de CA de confianza (Linux )o la agrega al almacén de certificados de confianza (windows )? O simplemente use --cacert /Path/to/filecon el contenido de su propio archivo de certificado firmado de confianza -.

Las otras respuestas responden a la pregunta sobre la base del wgetcomparable. Sin embargo, la verdadera pregunta es cómo mantengo una conexión confiable con un certificado autofirmado -usando curl. Según muchos comentarios, la seguridad es la principal preocupación en cualquiera de estas respuestas, y la mejor respuesta sería confiar en el certificado autofirmado -y dejar intactas las comprobaciones de seguridad curl.

-4
03.07.2017, 21:45
3 ответа

sedединственное решение:

sed 's/.* (\(.*\)) .*/\1/g'

Пример:

sed 's/.* (\(.*\)) .*/\1/g' myInput.txt 
XXXXX
 %%))XX
.SD F@* @
)[))DS((]
1
28.01.2020, 05:20

Обратите внимание, что для определения шаблона простое повторение семпла является простым способ разработать решение, я часто так делаю. Это также позволяет любому другому попробовать его на своей консоли без необходимости создавать файл.

Решение только для Gawk:

echo 'XXAAGGHH (XXXXX) ERRTYTUUUI
AAAAAAAA ( %%))XX) $@@$&%^&&
AADDDDD$ (.SD F@* @) *$%^^&^&&&
AA^@%%^^ ()[))DS((]) RTTYUU' | gawk '{r=gensub(/^[^(]*\((.*)\)[^)]*$/,"\\1","g",$0);print r}'
XXXXX
 %%))XX
.SD F@* @
)[))DS((]

Решение только для awk:

echo 'XXAAGGHH (XXXXX) ERRTYTUUUI
AAAAAAAA ( %%))XX) $@@$&%^&&
AADDDDD$ (.SD F@* @) *$%^^&^&&&
AA^@%%^^ ()[))DS((]) RTTYUU' | awk '{gsub(/^[^(]*\(|\)[^)]*$/,"",$0);print $0}'
XXXXX
 %%))XX
.SD F@* @
)[))DS((]

Решение только для sed:

echo 'XXAAGGHH (XXXXX) ERRTYTUUUI
AAAAAAAA ( %%))XX) $@@$&%^&&
AADDDDD$ (.SD F@* @) *$%^^&^&&&
AA^@%%^^ ()[))DS((]) RTTYUU' | sed -r 's/^[^(]*\(|\)[^)]*$//g'
XXXXX
 %%))XX
.SD F@* @
)[))DS((]

или для файла:

gawk '{r=gensub(/^[^(]*\((.*)\)[^)]*$/,"\\1","g",$0);print r}' input_file
# OR
awk '{gsub(/^[^(]*\(|\)[^)]*$/,"",$0);print $0}' input_file
# OR
sed -r 's/^[^(]*\(|\)[^)]*$//g'  input_file
# all output:
XXXXX
 %%))XX
.SD F@* @
)[))DS((] 

Очень плохая идея пытаться учиться таким образом, однако, просто нет замены биться головой о регулярные выражения, чтобы понять это самостоятельно, иначе вы никогда их не выучите. И, на мой взгляд, мало что может быть более ценным для изучения в долгосрочной перспективе, чем регулярные выражения в программировании.

Эти правила просты: взять все, что не является ( с чего начинается строка, а затем первое (, и проигнорировать или удалить его, затем взять все, что не является ) плюс последнее), заканчивающее строку и игнорировать или удалить это. В приведенных ответах вы заметите, что в этом случае есть два варианта: отрезать начало и конец строки, чтобы получить желаемый результат, или получить желаемый результат, игнорируя начало и конец строки, а затем распечатать результат .

Обратите внимание: если у вас есть шаблон, не так важно, какой язык или инструмент вы используете для его реализации.

0
28.01.2020, 05:20
grep -Eo '\(.+\)' input | sed 's/^.//; s/.$//'
0
28.01.2020, 05:20

Теги

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