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.