¿Cómo puedo eliminar todo el texto después de un carácter, en este caso dos puntos (":"), en bash? ¿Puedo eliminar los dos puntos también? No tengo idea de cómo hacerlo.¿Cómo puedo eliminar todo el texto después de un personaje en bash?
Respuesta
Un ejemplo podría haber sido útil, pero si he entendido bien, esto funcionaría:
cut -f1 -d":"
Esto convertirá "hola: mundo" en "hola".
egrep -o '^[^:]*:'
puede explicar cómo interpretar esto, gracias. –
'egrep' es grep con' -E'. No hace ninguna diferencia aquí desde 'grep 'regular. '-o' ordena a grep que imprima solo la parte de la línea que coincide con la expresión. '^' ancla la coincidencia al inicio de una línea. '[^:] *' coincide con cero o más caracteres que no son el carácter ':'. ':' coincide con el caracter ':'. – cdhowie
Gracias de nuevo por la explicación –
En Bash (y ksh, zsh, dash, etc.), puede usar la expansión de parámetros con %
que eliminará los caracteres del final de la cadena o #
que eliminará los caracteres del principio de la cadena. Si usa uno solo de esos caracteres, se eliminará la cadena más pequeña que coincida. Si duplicas el personaje, se eliminará el más largo.
$ a='hello:world'
$ b=${a%:*}
$ echo "$b"
hello
$ a='hello:world:of:tomorrow'
$ echo "${a%:*}"
hello:world:of
$ echo "${a%%:*}"
hello
$ echo "${a#*:}"
world:of:tomorrow
$ echo "${a##*:}"
tomorrow
Esto es manipulación de cadena de shell nativa, por lo que no se generarán procesos adicionales.Referencia [Sustitución del parámetro Bash] (http://tldp.org/LDP/abs/html/parameter-substitution.html#PARAMSUBREF), [Bash String Manipulation] (http://tldp.org/LDP/abs/html/ string-manipulation.html) y [Better Bash Scripting] (http://robertmuth.blogspot.jp/2012/08/better-bash-scripting-in-15-minutes.html) –
@denniswilliamson Cómo podría eliminar 2 caracteres después de que una cadena específica como 'hello: world' se convierta en' hello: wo' usando '$ {a%: *}'? – 3kstc
Gran respuesta, muchas gracias, pero también sería bueno agregar '" $ {a ## *:} "' para obtener solo 'tomorrow' =) – avtomaton
$ echo 'hello:world:again' |sed 's/:.*//'
hello
Digamos que usted tiene un camino con un archivo en este formato:
/dirA/dirB/dirC/filename.file
Ahora sólo desea que la ruta que incluye cuatro "/". Tipo
$ echo "/dirA/dirB/dirC/filename.file" | cut -f1-4 -d"/"
y su salida será
/dirA/dirB/dirC
La ventaja de usar corte es que también se puede cortar el directorio uppest, así como el archivo (en este ejemplo), por lo que si se escribe
$ echo "/dirA/dirB/dirC/filename.file" | cut -f1-3 -d"/"
su salida sería
/dirA/dirB
Aunque se puede hacer lo mismo desde el otro lado de la cadena, que no tendría mucho sentido en este caso como escribir
$ echo "/dirA/dirB/dirC/filename.file" | cut -f2-4 -d"/"
resultados en
dirA/dirB/dirC
En algunos otros casos, el último caso también podría ser útil. Tenga en cuenta que no hay "/" al comienzo de la última salida.
- 1. Eliminar todo después de cierto carácter
- 2. jQuery - Eliminar todo después de un elemento
- 3. ¿Cómo eliminar todos los caracteres después de un personaje específico en python?
- 4. Borrar TODO el texto a la izquierda de un personaje en particular en MS excel
- 5. cómo eliminar todo el texto después de la última repetición de un determinado carácter
- 6. eliminación de todo, por el personaje (y también de carácter)
- 7. C# ¿cómo puedo seleccionar todo el texto en un cuadro de texto cuando hago doble clic?
- 8. Obtener texto del personaje y después de usar jQuery
- 9. Regex eliminar todo después de: (incluyendo :)
- 10. ¿Cómo convierto un código de personaje a un personaje?
- 11. ¿Cómo puedo eliminar todo performSelector: withObject: afterDelay :?
- 12. Cómo eliminar la sección principal en bash
- 13. Cómo resaltar todo el texto borrado previamente después de un restablecimiento
- 14. Regex + Eliminar todo el texto antes del partido
- 15. Eliminar una nueva línea después de un texto en particular a través de bash/awk/sed/perl
- 16. PHP eliminar todo antes de la última instancia de un personaje
- 17. Jeditable - resaltar todo el texto después de hacer doble clic
- 18. SQL Servidor sustituir, eliminar todo después de cierto carácter
- 19. ¿Cómo puedo eliminar/eliminar símbolos de __future__ después de importarlos?
- 20. ¿Cómo puedo obtener el código de un personaje Unicode?
- 21. ¿Es posible eliminar todo después de un 'espacio' en el campo MySQL?
- 22. ¿Cómo leer todo el texto de un archivo de bytes []?
- 23. ¿Cómo redirigir todo stderr en bash?
- 24. ¿Cómo borrar todo desde el widget de texto tkinter?
- 25. Bash: ¿Cómo puedo mover todo el contenido de la carpeta hasta un nivel?
- 26. Eliminar caracteres y todo después de la cadena
- 27. ¿Cómo eliminar rápidamente todo el texto en la línea de comandos de emacs?
- 28. ¿Cómo marcar todo el texto CJK en un documento?
- 29. La salida de un GUID en VBScript ignora todo el texto después de él
- 30. ¿Cuándo puedo eliminar un archivo después de usarlo en Response.WriteFile()?
'cut' funciona, pero la respuesta de Dennis es mejor y más flexible. ¿Alguien sabe si genera un nuevo proceso como 'cortar'? – JoBu1324
Es mejor usar las funciones de expansión de parámetros incorporadas de Bash que generar subcapas que ejecutan herramientas como 'basename' y' cut', ver la respuesta de Dennis debajo de –
'cut' puede leer de stdin, por lo que es mejor especialmente cuando tienes un cadena que necesita procesar, como el contenido de un archivo. – Sahas