Obtendo os primeiros 5 caracteres de nomes de arquivos unix

0

Eu tenho nomes de arquivos Unix como o seguinte e preciso extrair os primeiros 5 caracteres dos nomes de arquivos. Eu sei que você pode usar o corte para extrair o conteúdo do campo, mas estou procurando os 5 primeiros caracteres do arquivo.

abc12345
def12345
ghi12345

A saída que espero é:

abc12
def12
ghi12
    
por Bariir 26.04.2016 / 19:18

3 respostas

1

Usando as funções de manipulação de string do shell

Você não especificou em qual contexto de script você pretende usar isso, então eu darei um exemplo genérico:

Supondo que a variável de shell $x contenha a string abc12345 , então ${x:0:5} representará os primeiros 5 caracteres de $x , ou seja, abc12 .

    
por 26.04.2016 / 19:23
0

cut compatível com Posix também pode cortar por caractere (ou byte, que não é a mesma coisa em UTF-8):

cut -c-5

ou

cut -b-5

respectivamente

    
por 26.04.2016 / 19:23
0

Supondo que você queira os 5 primeiros caracteres de um nome de arquivo:
Como você diz caracteres, cut não funcionará em geral, já que corta bytes.
Mas se são exatamente cinco caracteres, o POSIX portable ${var#?????} pode ser usado, como este:

filename='def12345'
result=${filename%"${filename#?????}"}
echo "$result"
    
por 26.04.2016 / 20:42

Tags