Je cherche un script bash ou sed (de préférence un one-liner) avec lequel je peux insérer un nouveau caractère de ligne après un nombre fixe de caractères dans un énorme fichier texte.Comment insérer un nouveau caractère de ligne après un nombre fixe de caractères dans un fichier
Répondre
Que diriez-vous de quelque chose comme ceci? Changement 20 est le nombre de caractères avant le saut de ligne, et temp.text est le fichier à remplacer dans ..
sed -e "s/.\{20\}/&\n/g" < temp.txt
Échoue si le fichier contient un caractère '~' –
Cela insère une nouvelle ligne après * tous les * 20 caractères (par ligne de l'original). Si l'original ne contient pas de nouvelle ligne et que vous voulez un retour à la ligne après seulement les 20 premiers caractères, laissez le "g" (global) à la fin. Si vous le souhaitez et que l'original contient des sauts de ligne, vous devrez utiliser une solution différente. –
J'ai eu le même problème mais dans OSX il insère un "n" plutôt qu'un saut de ligne? J'ai vérifié d'autres messages avec le même problème mais je ne pouvais pas comprendre comment le réparer? Quelqu'un s'il vous plait? – JM88
si vous voulez dire que vous voulez insérer votre nouvelle ligne après un certain nombre de caractères par rapport au fichier entier , par exemple après le caractère 30 dans le fichier entier
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 vous voulez dire insérer au nombre spécifique de caractères dans chaque ligne par exemple après chaque 5ème caractère
gawk 'BEGIN{ FS=""; ch=5}
{
print substr($0,1,ch) "\n" substr($0,ch)
}' file
Annexer une empt y ligne après une ligne avec exactement 42 caractères
sed -ie '/^.\{42\}$/a\
' huge_text_file
Soit N une variable de shell représentant le nombre de caractères après lequel vous voulez un retour à la ligne. Si vous voulez continuer le comptage des lignes de accross:
perl -0xff -pe 's/(.{'$N'})/$1\n/sg' input
Si vous voulez redémarrer le compteur pour chaque ligne, omettez l'argument -0xff.
Cela pourrait fonctionner pour vous:
echo aaaaaaaaaaaaaaaaaaaax | sed 's/./&\n/20'
aaaaaaaaaaaaaaaaaaaa
x
ne fonctionne littéralement que pour la première ligne (par exemple, insère un retour à la ligne après 20 caractères puis se ferme). Ne convient pas pour "un énorme fichier texte". – michael
Voici une solution POSIX:
awk '{gsub(/.{5}/,"&\n")}1' file
Ou:
fold -w5 file
Entrée:
banana strawberry grape
sortie:
banan
a str
awber
ry gr
ape
Fait intéressant, la solution Awk est plus performant que plier.
J'ai vu cela essayé des dizaines de façons différentes, mais il ya toujours des cas spéciaux, des différences de version, d'autres problèmes, ou la solution est tout simplement inélégante. "fold" est * certainement * le bon outil pour cela. +1 – laindir
'fold' devrait être la bonne réponse. "man fold" donne 'wrap chaque ligne d'entrée pour tenir dans la largeur spécifiée'. Il répond parfaitement à la question! – dcousens
Malheureusement, 'fold 'ne gère pas autre chose que des fichiers ASCEI, malheureusement - essayez simplement de tester sur n'importe quel fichier Unicode (par exemple avec des citations Unicode spéciales, etc), il fait un tas de choses. Le 'awk..gsub' fonctionne cependant. – michael
- 1. Insérer une chaîne après un certain caractère dans Ruby
- 2. Comment devrais-je imprimer un caractère particulier dans le fichier après avoir lu le fichier?
- 3. Comment insérer un fichier texte dans un champ dans PostgreSQL?
- 4. MySQL - S'il commence par un nombre ou un caractère spécial
- 5. NHibernate: Comment insérer un nouveau membre Set après la création de l'objet conteneur?
- 6. nombre de pages dans un fichier pdf
- 7. Dans Eclipse, comment remplacer un caractère par une nouvelle ligne?
- 8. Comment imprimer un ensemble de fichiers dans un fichier, un nom de fichier par ligne?
- 9. Comment puis-je traiter un fichier binaire d'enregistrements de longueur fixe sans saut de ligne?
- 10. Comment échapper un caractère de boîtier dans un fichier de données SQL Loader?
- 11. Comment compter le nombre de caractères dans un fichier une fois que le point de départ a été déterminé?
- 12. caractères d'échappement dans un CString
- 13. Comment créer un nouveau fichier Excel à l'aide de JXL?
- 14. Comment insérer un caractère Unicode dans une zone de texte enrichi?
- 15. comment insérer ligne par ligne de contenu dans un fichier texte dans une base de données mysql?
- 16. Comment insérer une chaîne dans un rectangle?
- 17. Comment convertir un IntPtr de nouveau dans un objet
- 18. recyclage du pool d'applications après « nombre fixe de demandes »
- 19. Comment puis-je remplacer une ligne spécifique par un numéro de ligne dans un fichier texte?
- 20. Comment exporter des données dans un fichier prn (largeur fixe avec remplissage d'espace) dans Rails
- 21. Comment insérer par programme une ligne dans un GridView?
- 22. Comment faire une requête de tableau croisé dans Access avec un nombre fixe de colonnes
- 23. L'expression rationnelle requiert un nombre de caractères non blancs
- 24. Insérer un GUID à chaque ligne existante
- 25. Comment insérer automatiquement des blocs de préprocesseur et de commentaire dans un nouveau fichier d'en-tête C++ dans Visual Studio?
- 26. Changement de ligne dans un fichier
- 27. Insertion de caractères de nouvelle ligne dans Java
- 28. Comment puis-je faire de ce doubleur Perl pour faire basculer un caractère en ligne dans un fichier?
- 29. TFS: Comment trouver l'ancien nom de fichier après un renommage
- 30. Comment puis-je ajouter des caractères à une ligne dans un fichier?
Dupe de http://stackoverflow.com/questions/525592/find-and-replace-inside-a-text-file-from-a-bash-command parmi beaucoup, beaucoup d'autres –
Je ne suis pas d'accord avec le commentaire de dupe ici, Neil: ce n'est pas une simple recherche et remplacez comme la question dans votre lien .. – Kristian