Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

234
Visualizações
Cómo insertar un carácter después del primer byte en una línea en Linux

Tengo un archivo de configuración que indica 1,2,3 que significa colocar un , después del 1er, 2do y 3er byte .

Por ejemplo, mi entrada es

 stackoverflow

entonces quiero hacerlo

 s,t,a,ckoverflow

¿Cómo debo hacerlo con las herramientas de Linux? Siento que se debe usar sed , pero no sé cómo hacerlo.

Editar:

Tengo más de 10 comas para colocar. Y la línea también incluye caracteres de varios bytes.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

En sed :

 echo stackoverflow | sed 's/./&,/1;s/./&,/3;s/./&,/5'

s/.../.../n reemplaza la n -ésima coincidencia. Después del primer reemplazo, el segundo byte sería ahora la tercera coincidencia y, después de eso, el tercer byte sería ahora el quinto.

O, con grupos de expresiones regulares:

 echo stackoverflow | sed 's/\(.\)\(.\)\(.\)/\1,\2,\3,/'

En expresiones regulares básicas (BRE), \(…\) se usa para agrupar expresiones. Puede hacer referencia al texto que coincidió con el n -ésimo grupo usando \ n , para reutilizar el texto coincidente en el reemplazo, por ejemplo. Entonces, en este caso, tengo tres grupos, cada uno con solo . .

Con GNU sed, puede evitar el \ usando expresiones regulares extendidas (ERE):

 echo stackoverflow | sed -r 's/(.)(.)(.)/\1,\2,\3,/'

Con juegos de caracteres multibyte, intente con la configuración regional C:

 $ echo 'æ ' | LC_ALL=C sed 's/\(.\)\(.\)\(.\)/\1,\2,\3,/' �,�, , $ echo → | LC_ALL=C sed 's/\(.\)\(.\)\(.\)/\1,\2,\3,/' �,�,�,
over 4 years ago · Santiago Trujillo Relatório

0

IFS=, read -ra arr <<< "$1" rules=() for i in "${arr[@]}"; do rules[$i]=1 done s=stackoverflow for (( i=0; i<${#s}; i++ )); do if (( ${rules[i+1]} )); then printf '%s,' "${s:i:1}" else printf '%s' "${s:i:1}" fi done

Ejemplo de uso:

 $ ./sof 1,2,3 $ s,t,a,ckoverflow $ ./sof 1,2,3,7 $ s,t,a,ckov,erflow
over 4 years ago · Santiago Trujillo Relatório

0

Esto podría funcionar para usted (GNU sed):

 sed 's/\B/\n/g;s/\n//4g;s/\n/,/g' file

o:

 sed 's/\B/,/;s/\B/,/;s/\B/,/' file
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda