Нет вывода для $ grep '[^ az] \ {22 \}' / usr / share / dict / words

blueman не использует файл конфигурации, вместо этого использует dconf.

Я использовал dconf-editor и нашел настройку по адресу:

/org/blueman/transfer/shared-path
0
24.05.2018, 19:06
2 ответа

[specification]coincide con un elemento de clasificación (puede ser un carácter o secuencia de caracteres como se define en el algoritmo de clasificación para la configuración regional (, por ejemplo, en configuraciones regionales húngaras en sistemas GNU,dzses un elemento de clasificación que se clasifica en algún lugar entre dye))en el conjunto especificado .

Esa especificación puede incluir

  • rangos comoa-z(o[.dzs.]-z)para cotejar elementos que se cotejan entre ayz(tenga en cuenta que generalmente incluye abcdefghijklmnoprstuvwxyz pero en la mayoría de los lugares incluye mucho más ). Además, como POSIX lo deja sin especificar para configuraciones regionales distintas de las configuraciones regionales de POSIX, la cantidad de rangos que se basan en el orden de clasificación varía significativamente entre las implementaciones.
  • caracteres individuales o elementos de clasificación (x,[.dsz.])
  • Clases de caracteres POSIX [:alpha:],[:digit:]
  • clases equivalentes como [=e=]para todos los elementos de clasificación que tienen el mismo peso de clasificación principal quee(podrían incluir cosas comoé)

Entonces, por ejemplo, [acd[=e=]h-k[:digit:][.dzs.]]coincide con un elemento de clasificación siempre que sea a, c, d, dzso sea equivalente a eo se coteja entre hy ko se clasifica como dígito .

Y si la especificación comienza con ^, aún coincide con un elemento de clasificación, pero con el conjunto complementado. Eso es cualquier elemento de clasificación excepto los especificados.

Entonces [^a-z]coincide con cualquier elemento de clasificación que no se coteja entre ay z. Por ejemplo, probablemente coincidiría con 1y , posiblemente con Xo DSZsegún la configuración regional y la implementación de grep, pero no con a, xni zy probablemente no en é.

Entonces grep '[^a-z]\{22\}'coincide con las líneas que contienen una secuencia de 22elementos de clasificación que se recopilan antes de ao después de z.

Mientras que grep -v '[a-z]\{22\}'coincide con líneas que no contienen una secuencia de 22 elementos de clasificación que se clasifican entre ay z.

Hacer coincidir lo mismo sin -ves casi imposible de implementar, necesitaría hacer coincidir líneas que no contengan más de 21 [a-z]elementos de clasificación entre dos elementos [^a-z]. Pero si la configuración regional admite elementos de recopilación de caracteres múltiples -, eso no es realmente posible. Por ejemplo, en esas configuraciones regionales húngaras, [a-z]coincide con dszpero también con d, sy z, por lo que encontrará que allí, [a-z]{0,21}coincidirá con dszxxxyyyxxxyyyxxxyyyxpero también sería [a-z]{22}.

Para locales que no tienen elementos de clasificación de varios -caracteres, puede hacer algo como:

grep  '^[^a-z]*\([a-z]\{1,21\}[^a-z]\{1,\}\)*[a-z]\{0,21\}$'

Ahora, también hay algunas implementaciones grepque admiten sintaxis regulares más avanzadas con opciones que tienen algún operador de negación .

Por ejemplo, la implementación abierta de GNU o ast -de grepadmite perl -como (usando libpcre en GNU grep, la implementación propia de ast -open para ast -open grep )expresiones regulares con la opción -Pque tiene un(?!pattern)operador de búsqueda negativa -adelante .

(?!pattern)coincide con ancho cero en cualquier punto de la cadena en cuestión, siempre que el patrón no coincida a partir de ahí. Entonces uno podría usar:

 grep -P '^(?!.*[a-z]{22})'

para que coincida al comienzo de la línea, siempre que no vaya seguido de ningún número de caracteres y 22 [a-z]s. Sin embargo, tenga en cuenta que en PCRE (no en ast -open ), [a-z]solo coincide con abcdefghijklmnopqrstuvwxyz independientemente de la configuración regional.

ast -open también toma una opción -Xpara lo que llaman expresiones regulares aumentadas . Esas expresiones regulares aumentadas tienen un operador !que niega las cosas. x!coincidiría con cualquier cosa que no sea x(, incluida la cadena vacía ).

Entonces, con ast -abierto grep, también podría hacer:

grep -X '^(.*[a-z]{22}.*)!$'
4
28.01.2020, 02:14
  • grep '[^a-z]\{22\}' /usr/share/dict/words

    Busca líneas en el archivo /usr/share/dict/wordsque contienen una cadena de 22 caracteres que no son letras minúsculas. Es muy probable que el archivo no contenga ninguna de esas líneas. (¿Por qué ese archivo contiene cadenas de 22 letras no -?)

  • grep -v '[a-z]\{22\}' /usr/share/dict/words

    Busca líneas que no contengan cadenas de 22 letras. Probablemente habrá muchas de esas líneas. (Porque la mayoría de las palabras tienen menos de 22 letras.)

3
28.01.2020, 02:14

Теги

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