Você pode fazer:
echo "abc_d_e75_f10_xyz_l_11" | sed 's/_/\//' | cut -d "_" -f1-3
Isso substituirá o primeiro _
por /
, além de aparar a string.
Saída:
abc/d_e75_f10
Eu tenho uma string abc_d_e75_f10_xyz_l_11
que eu quero dividir para que eu queira construir uma string de um diretório existente desta string para cd
.
Portanto, neste exemplo abc_d_e75_f10_xyz_l_11
, quero dividir usando o caractere _
no qual desejo gravar este comando cd /home/userA/abc/d_e75_f10
e negligenciar o resto da string.
Você pode fazer:
echo "abc_d_e75_f10_xyz_l_11" | sed 's/_/\//' | cut -d "_" -f1-3
Isso substituirá o primeiro _
por /
, além de aparar a string.
Saída:
abc/d_e75_f10
Você pode usar os recursos internos de manipulação de strings do bash shell, por exemplo,
$ var="abc_d_e75_f10_xyz_l_11"
$ echo "/home/userA/${var/_//}"
/home/userA/abc/d_e75_f10_xyz_l_11
Você quer sed
.
sed
é uma ferramenta para realizar operações de pesquisa e substituição no texto.
Nesse caso, parece que você deseja substituir a primeira ocorrência de _
por /
.
Isso fará isso:
echo "abc_d_e75_f10_xyz_l_11" | sed "s/_/\//"
Parece estranho com as barras, mas a ideia é "s/search/replace/"
. E /
tem que ser escapado.