Eu tenho uma string assim:
|abcdefg|
E eu quero obter uma nova string chamada de alguma forma (como string2) com a string original sem os dois |
caracteres no início e no final dela, para que eu tenha o seguinte:
abcdefg
Isso é possível no bash?
bash
command-line
scripts
Matteo Pagliazzi
fonte
fonte
awk -F\| '{ print $2 }' <<<"|string|"
awk
soluções legais . Eu preciso aprenderawk
.IFS='|' read string2 <<< $string
:)"${string:1:-1}"
man bash
.Aqui está uma solução que é independente do comprimento da string (bash):
fonte
Ao sair de alguns posts listados aqui, parece que a maneira mais simples de fazer isso é:
edit: funciona no ubuntu com o bash 4.2; não funciona no centOS com bash 4.1
fonte
Outra maneira é usar
head
&tail
comandos:fonte
[something something]
com o objetivo de cortar parênteses, entãoecho "[something something]" | tail -c +2 | head -c -2
trabalhei. Obrigado por uma dica!echo -n "|abcdefg|" | tail -c +2 | head -c -1
. Não sei por que minhas edições foram rejeitadas ... É muito triste, para ser honesto. Vejaman head
para mais informaçõesE um outro:
fonte
Você também pode usar o sed para remover o | não apenas referenciando o próprio símbolo, mas usando referências posicionais como em:
Onde ':' são os delimitadores (você pode substituí-los por / ou qualquer caractere que não esteja na consulta, qualquer sinal após s fará isso) Aqui ^ (acento circunflexo) significa no início da string de entrada e $ (dólar) significa no fim. O . (ponto) que está após o sinal de intercalação e o que está antes do cifrão representa um único caractere. Portanto, em outras palavras, estamos excluindo o primeiro e o último caracteres. Lembre-se de que isso excluirá qualquer caractere, mesmo que | não está presente na string.
EX:
fonte
função shell
Uma abordagem um pouco mais detalhada, mas funciona com qualquer tipo de primeiro e último caractere, não precisa ser a mesma. A idéia básica é que estamos pegando uma variável, lendo-a caractere por caractere e acrescentando apenas aqueles que queremos a uma nova variável
Aqui está toda essa ideia formatada em uma boa função
E aqui está a mesma função em ação:
Pitão
ou na linha de comando:
AWK
Rubi
fonte
Solução pequena e universal:
Especial neste caso e permitindo que o '|' personagem pode estar lá ou não:
fonte
De http://tldp.org/LDP/abs/html/parameter-substitution.html
fonte