Почему библиотека ICU такая большая?

Вот как эмулировать grep -B1 с sed :

sed '$!N;/pattern/P;D' infile

Он очень похож на здесь . Как и предыдущий, он читает в строке N ext, но на этот раз P запускается до первой \ n ewline if ] пространство шаблонов совпадает с , а затем, как и другое, D выбирается до первой \ n ewline и перезапускает цикл. Итак, с вашим примером ввода:

sed '$!N;/&/P;D' infile

output:

aaaaaaaaa
bbbbbbbbb &
ccccccccc &
eeeeeeeee
fffffffff &
ggggggggg &

Опять же, чтобы увидеть, как это работает, добавьте l до и после N , чтобы посмотреть на пространство шаблонов ::

sed 'l;$!N;l;/&/P;D' infile

например с образцом файла:

zzzz &
aaaa
bbbb
cccc &
dddd &
hhhh
eeee
ffff &
gggg &

это команды, которые выполняет sed , и соответствующий вывод:

cmd        output            cmd
l       zzzz &$               N # read in the next line
l       zzzz &\naaaa$         # pattern space matches so print up to \n
P       zzzz &                D # delete up to \n 
l       aaaa$                 N # read in the next line
l       aaaa\nbbbb$           D # delete up to \n (no match so no P)
l       bbbb$                 N # read in the next line
l       bbbb\ncccc &$         # pattern space matches so print up to \n
P       bbbb                  D # delete up to \n
l       cccc &$               N # read in the next line
l       cccc &\ndddd &$       # pattern space matches so print up to \n
P       cccc &                D # delete up to \n
l       dddd &$               N # read in the next line
l       dddd &\nhhhh$         # pattern space matches so print up to \n
P       dddd &                D # delete up to \n
l       hhhh$                 N # read in the next line
l       hhhh\neeee$           D # delete up to \n (no match so no P)
l       eeee$                 N # read in the next line
l       eeee\nffff &$         # pattern space matches so print up to \n
P       eeee                  D # delete up to \n
l       ffff &$               N # read in the next line
l       ffff &\ngggg &$       # pattern space matches so print up to \n
P       ffff &                D # delete up to \n
l       gggg &$               # last line so no N 
l       gggg &$               # pattern space matches so print up to \n
P       gggg &                D # delete up to \n

1
09.02.2018, 17:35
2 ответа

Tanto JRE como Apache usan libicu, a través delibxml2. Puede ver esto en su sistema preguntando aptitudepor qué necesita un paquete:

aptitude why apache2 libicu52
aptitude why openjdk-7-jre libicu52

Esto mostrará el árbol de dependencias "principal" que extrae libicu52, comenzando respectivamente desde Apache y JRE. Puede agregar -vdespués de whypara enumerar todos los árboles de dependencia que vinculan los dos paquetes.

La biblioteca es enorme porque contiene una enorme base de datos de tablas de conversión de juegos de caracteres y datos locales. Puede hacerse una idea del contenido explorando las tablas de mapeo en el sitio web de ICU.

No creo que haya bibliotecas alternativas, al menos ninguna que pueda usar fácilmente como reemplazo. Si desea un sistema más pequeño, lo mejor que puede hacer es reconstruir libxml2sin la dependencia libicu.

3
27.01.2020, 23:32

К вашему сведению :Если вас беспокоит размер этой библиотеки, но у вас установлена ​​команда/пакет 'aptitude', вы можете удалить ее (а также все зависимости ).

0
07.05.2021, 14:47

Теги

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