Enrole o primeiro caractere de uma string usando sed

3

Digamos que eu tenha uma string foobar Como posso produzir facilmente algo como [f]oobar sem substituir especificamente f por [f] ?

Caso de uso: aceito a entrada do usuário de um nome de processo e quero mostrar os detalhes do processo enquanto elimino o grep .

    
por Moshe 28.03.2017 / 15:47

3 respostas

10

Faça:

sed 's/^./[&]/'
  • ^. corresponde ao primeiro caractere da linha
  • Na substituição, & é expandido para a correspondência, estamos colocando a correspondência com []

Exemplo:

% sed 's/^./[&]/' <<<'foobar'
[f]oobar
    
por 28.03.2017 / 15:52
2

Em apenas Bash, com expansão de substring:

$ pat=foobar
$ echo "[${pat:0:1}]${pat:1}"
[f]oobar
    
por 28.03.2017 / 16:02
2
v=foobar
echo "[${v%${v#?}}]${v#?}"
[f]oobar
    
por 28.03.2017 / 16:12