Estoy buscando un guión bash o sed (preferiblemente un trazador de líneas) con el que puedo insertar un nuevo carácter de línea después de un número fijo de caracteres en un archivo de texto enormeCómo insertar un nuevo carácter de línea después de un número fijo de caracteres en un archivo
Respuesta
¿Qué tal algo así? Cambio 20 es el número de caracteres antes de la nueva línea, y temp.text es el archivo para reemplazar en ..
sed -e "s/.\{20\}/&\n/g" < temp.txt
Falla si el archivo contiene un carácter '~' –
Esto inserta una línea nueva después de * cada * 20 caracteres (por línea del original). Si el original no contiene líneas nuevas y desea una nueva línea después de los primeros 20 caracteres, omita la "g" (global) al final. Si quiere esto y el original contiene nuevas líneas, tendrá que usar una solución diferente. –
Tuve el mismo problema pero en OSX inserta una "n" en lugar de un salto de línea? Revisé otras publicaciones con el mismo problema, pero no pude entender cómo solucionarlo. ¿Alguien por favor? – JM88
si usted quiere decir que desea insertar su nueva línea después de una serie de caracteres con respecto a todo el archivo , por ejemplo, después de que el carácter número 30 en todo el archivo
gawk 'BEGIN{ FS=""; ch=30}
{
for(i=1;i<=NF;i++){
c+=1
if (c==ch){
print ""
c=0
}else{
printf $i
}
}
print ""
}' file
si te refieres a insertar al número específico de caracteres en cada línea, por ejemplo después de cada quinto carácter
gawk 'BEGIN{ FS=""; ch=5}
{
print substr($0,1,ch) "\n" substr($0,ch)
}' file
Anexar una adelantarse y la línea después de una línea con exactamente 42 caracteres
sed -ie '/^.\{42\}$/a\
' huge_text_file
Sea N una variable de shell que representa el recuento de caracteres tras los cuales desea un salto de línea. Si desea continuar cruzando las líneas de conteo:
perl -0xff -pe 's/(.{'$N'})/$1\n/sg' input
Si desea reiniciar el contador para cada línea, omite el argumento -0xff.
Esto podría funcionar para usted:
echo aaaaaaaaaaaaaaaaaaaax | sed 's/./&\n/20'
aaaaaaaaaaaaaaaaaaaa
x
, literalmente, solo funciona para la primera línea (por ejemplo, inserta una línea nueva después de 20 caracteres y luego se cierra). No es adecuado para "un archivo de texto enorme". – michael
Aquí está la solución de POSIX:
awk '{gsub(/.{5}/,"&\n")}1' file
O:
fold -w5 file
de entrada:
banana strawberry grape
de salida:
banan
a str
awber
ry gr
ape
Curiosamente, la solución Awk es más performant de doblar.
He visto esto probado de diferentes maneras, pero siempre hay casos especiales, diferencias de versión, otros problemas, o la solución es sencillamente poco elegante. 'fold' es * definitivamente * la herramienta correcta para esto. +1 – laindir
'fold' debería ser la respuesta correcta. 'man fold' da' envolver cada línea de entrada para que encaje en el ancho especificado'. ¡Responde la pregunta perfectamente! – dcousens
desafortunadamente 'fold' no maneja nada más que archivos simples de ASCII, desafortunadamente, solo intente probar en cualquier archivo Unicode (por ejemplo, con comillas Unicode especiales, etc.), hace un lío de cosas. El 'awk..gsub' funciona, sin embargo. – michael
- 1. Cómo insertar un carácter de línea nueva después de cada 200 caracteres con jQuery
- 2. cómo insertar nueva línea después de un carácter específico en las secuencias de comandos
- 3. ¿Cómo agregar un nuevo carácter de línea en node.js?
- 4. Insertar carácter de nueva línea después de cada 76 caracteres en una cadena de base64
- 5. ¿Cómo puedo insertar un carácter después de cada n caracteres en javascript?
- 6. Cómo insertar un carácter en un NSString
- 7. regla ANTLR para consumir un número fijo de caracteres
- 8. ¿Cómo puedo escapar de un nuevo carácter de línea en un archivo .ini para que Zend_Config_Ini lo lea literalmente?
- 9. Cómo limitar el número de caracteres por línea en el área de texto a un valor fijo
- 10. ¿Es posible poner un nuevo carácter de línea en una línea de eco en un archivo por lotes?
- 11. Cómo imprimir el número de caracteres en cada línea de un archivo de texto
- 12. Detectar un carácter de nueva línea
- 13. ¿Cómo hacer coincidir un número fijo de caracteres en ANTLR 3?
- 14. ¿Cómo registrar un número de serie en un archivo ejecutable?
- 15. ¿Nuevo carácter de línea en VB.Net?
- 16. Concatenar caracteres adyacentes de un carácter especial "-"
- 17. Reemplazar caracteres en un archivo
- 18. Carácter PHP de fin de línea para un archivo csv
- 19. Cómo insertar un nuevo historial (reescrito) en un repositorio remoto
- 20. ¿Cómo puedo insertar un carácter de tabulación real en Vim?
- 21. Cómo insertar un nuevo elemento en un IEnumerable
- 22. ¿Cómo puedo insertar un espacio después de cierta cantidad de caracteres en una cadena usando Python?
- 23. ¿Cómo puedo reemplazar una línea específica por número de línea en un archivo de texto?
- 24. Encontrar un número primo después de un número dado
- 25. Después de insertar, sólo un carácter se inserta de "cadena" en la base de datos
- 26. Cómo encontrar el número de caracteres en un archivo sin atravesar los contenidos
- 27. Insertar una coma después de cada carácter en C#
- 28. Cómo insertar carácter de nueva línea después de la coma en `), (` con sed?
- 29. Escribiendo XMLDocument en un archivo con un carácter de nueva línea específico (C#)
- 30. ¿Cómo insertar contenido en línea de un FlowDocument en otro?
Dupe of http://stackoverflow.com/questions/525592/find-and-replace-inside-a-text-from-a-bash-command entre muchos, muchos otros –
No estoy de acuerdo con el comentario dupe aquí, Neil: esta no es una simple búsqueda y reemplazo como la pregunta en su enlace ... – Kristian