Estoy buscando grep para mostrar todos los caracteres que no comienzan con números. He hecho algo como esto:
grep -v '^[1-2]*[a-zA-Z]?' -o
Pero no funciona. ¿Tienes alguna idea para algún registro exp?
grep
regular-expression
Paweł Jaworowski
fuente
fuente
-v
con-o
causargrep
no produce salida.grep
usa expresiones regulares básicas . Esto significa que tu?
está siendo tratado como un signo de interrogación literal. Puede escapar del signo de interrogación\?
o utilizar la-E
opción paraextended
expresiones regulares, en cuyo caso?
es un carácter de patrón.Respuestas:
grep -v '^[0-9]'
Producirá todas las líneas que no (
-v
) coinciden con las líneas que comienzan^
con un número[0-9]
Por ejemplo
o si desea eliminar todas las palabras que comienzan con un dígito
o con atajos y afirmaciones
Por ejemplo
fuente
\> Matches the null string at the end of a word. This is equivalent to
[[:>:]] '. `Depende de cómo defina una cadena (por ejemplo, si cuenta los caracteres de puntuación como cadena o no). Sin embargo, puede comenzar desde algo como
fuente
Para eliminar todas las palabras de una línea que comienzan con un número
sed
que puede hacer:... o, si solo desea palabras que no comienzan con números impresos cada una en una línea separada:
... lo anterior debería funcionar bastante bien. Deberá adaptar la traducción de línea
\n
electrónicay///
para los divisores que considere relevantes. Y,sed
dependiendo de la implementación, es posible que también desee un escape real<tab>
en lugar de la\t
barra invertida.fuente
!
antes del'"'
intercambio, pero si lo estás usandobash
, quizás quierasset +H
o si eszsh
asíset -K
. En mi opinión, cualquier!
expansión citada es una locura. También puede usar heredocs como"${0#-}" <<\CMD\nyour cmd strings\nCMD\n
para obtener un comportamiento programado en shells interactivos."${0#-}" <<...
consejo!"${0#-}" -s -- arg list <<\CMD\n...
, también puede establecer los parámetros posicionales en la invocación. Usar"$@"
o*
es a menudo útil para mí en lugar dearg list
. Y conln -s "$(command -v "${0#-}")" /tmp/new_name; cd tmp; new_name <<\CMD\n...
usted puede obtener un nuevo$0
y aún manejar stdin.