Tengo una cadena como esa:
|abcdefg|
Y quiero obtener una nueva cadena llamada de alguna manera (como string2) con la cadena original sin los dos |
caracteres al principio y al final para que tenga esto:
abcdefg
¿Es eso posible en bash?
bash
command-line
scripts
Matteo Pagliazzi
fuente
fuente
awk -F\| '{ print $2 }' <<<"|string|"
awk
soluciones geniales . Necesito aprenderawk
.IFS='|' read string2 <<< $string
:)"${string:1:-1}"
man bash
.Aquí hay una solución que es independiente de la longitud de la cadena (bash):
fuente
Saliendo de algunas publicaciones enumeradas aquí, parece que la forma más sencilla de hacerlo es:
editar: funciona en ubuntu con bash 4.2; no funciona en centOS con bash 4.1
fuente
Otra forma es usar
head
ytail
comandos:fuente
[something something]
objetivos para cortar los corchetes, así queecho "[something something]" | tail -c +2 | head -c -2
funcionó. Gracias por un consejo!echo -n "|abcdefg|" | tail -c +2 | head -c -1
. No estoy seguro de por qué mis ediciones fueron rechazadas ... Es muy triste, para ser honesto. Verman head
para más informaciónY otro:
fuente
También puede usar sed para eliminar el | no solo haciendo referencia al símbolo en sí, sino usando referencias posicionales como en:
Donde ':' son los delimitadores (puede reemplazarlos con / o cualquier carácter que no esté en la consulta, cualquier signo que siga al s lo hará) Aquí ^ (caret) significa al comienzo de la cadena de entrada y $ (dólar) significa al final. Los . (punto) que está después del símbolo de intercalación y el que está antes del signo de dólar representa un solo carácter. En otras palabras, estamos eliminando el primer y el último carácter. Tenga en cuenta que esto eliminará cualquier carácter incluso si | No está presente en la cadena.
EX:
fuente
función de shell
Un enfoque un poco más detallado, pero funciona en cualquier tipo de primer y último personaje, no tiene que ser el mismo. La idea básica es que estamos tomando una variable, leyéndola carácter por carácter y agregando solo aquellos que queremos a una nueva variable
Aquí está toda esa idea formateada en una buena función
Y aquí está esa misma función en acción:
Pitón
o en la línea de comando:
AWK
Rubí
fuente
Solución pequeña y universal:
Especial en este caso y permitiendo que el '|' el personaje puede estar ahí o no:
fuente
De http://tldp.org/LDP/abs/html/parameter-substitution.html
fuente