Je veux mettre toutes les lignes d'un texte sur une seule ligne. Je suis un débutant en codage essayant d'apprendre en faisant. J'ai passé quatre heures à essayer de résoudre ce problème. Je sais qu'il existe une solution simple à ce problème. Voici ce que j'ai essayé.
sed -e 'N; s / \ n //' monfichier.txt #Ne fait rien sed -e: a -e N -e 's / \ n / /' -e ta myfile.txt #output tout foiré et je ne peux pas faire la tête ni la queue de la syntaxe cat myfile.txt | tr -d '\ n'> monfichier.txt # Supprime toutes les lignes
Voici le fichier texte:
500212 262578-4-4 23200 GRIFFITH LABORATORIES LTD LABORATOIRES DE GRIFFITH CONSEIL DU COMTÉ DU SUD DUBLIN BUREAU BUREAU (INDUSTRIEL) Liste évaluable 2 Pineview Industrial Estate Firhouse Road Knocklyon 31 déc. 2007 01 janv. 2008 "
Je ne peux pas comprendre où je me suis trompé ...
cat reval_details.asp?Pno=500211.txt | tr -d '\n' > new_reval_details.asp?Pno=500211.txt
tr -d '\n' <input.txt > output.txt
- qui évite l'utilisation inutile de chat et utilise un tuyau inutile de moins.C'est ici. C'est une autre solution simple et simple.
la source
echo `cat Input.txt` > Output.txt
fonctionne aussi, juste une autre variantetr
solution.MÉTHODE SIMPLE
Une autre méthode utilisant awk,
Sortie:
Remarque:
ORS = '' -> ORS (Output Record Separator). (c'est-à-dire) votre séparateur de champ, vous pouvez avoir n'importe quel caractère entre les guillemets simples comme séparateur de champ. En utilisant cette méthode awk, nous pouvons inclure des espaces et tous les caractères.
J'espère que cela pourrait aider!
la source
man awk
Il n'est pas nécessaire de mettre l'étiquette en
:a
dehors de l'instruction principale, ni l'-e
option nécessaire nécessaire; enfin, le/$/
est superflu (chaque ligne a un caractère EOL).Améliorer les autres réponses, on obtient
Ce qui est plus clair s'il est écrit comme suit,
La commande fonctionne comme suit:
N
ajoute la ligne suivante à l'espace de motif (multiligne), qui contient déjà la ligne actuelle;s/\n/ /
remplacer le caractère de nouvelle ligne\n
généré parN
par un espace;
ta
va à la ligne de script suivant l'étiquette:a
tant que la substitution à l'étape 2 a réussi , c'est-à - dire que si la substitution a eu lieu, l'exécution passe à l'étape 1 sans "frapper" la fin du script, c'est-à - dire sans lire une autre ligne d'entrée.Notez ce qui suit;
sed
lit les lignes du fichier d'entrée une par une dans l'ordre, à partir de la 1ère ligne ;:a
n'est qu'une étiquette, pas une commande à exécuter;N
est, en principe, exécuté sur n'importe quelle ligne, maiss/\n/ /
(en principe exécuté sur n'importe quelle ligne) réussit sur n'importe quelle ligne mais la dernière , doncta
rend la fin du script accessible uniquement lorsque la dernière ligne d'entrée est lue (la seule ligne oùs
échoue), doncp
commande implicite est exécutée.Ainsi, le script lit essentiellement la 1ère ligne d'entrée et continue d'ajouter les lignes suivantes une par une, en remplaçant à chaque fois la nouvelle ligne par un espace; après que la dernière ligne est ajoutée (et
\n
modifiée dans un espace),N
ne peut pas ajouter de ligne,s
échoue,ta
est ignorée, la fin du script est atteinte et l'p
instruction rint implicite est exécutée sur l'espace de motif looong 1 ligne actuel .L'
-i
option remplace le fichier d'entréefile
par tout l'espace de motif 1 ligne.la source
GEDIT:
Rechercher et remplacer
\n
par un espace ''.Vous pouvez obtenir la fenêtre de remplacement en allant dans 'Rechercher' -> 'Remplacer'
ou via le raccourci clavier Ctrl+H
Voir capture d'écran ci-dessous:
Votre texte d'origine est sur les lignes 1-14.
Le résultat est à la ligne 16.
la source
Je pense que la façon la plus simple de le faire est:
http://ss64.com/bash/paste.html
la source
Essaye ça
http://anandsekar.github.io/joining-all-lines-in-a-file-using-sed/
la source
Je pense que vous oubliez simplement que vous deviez dire à sed de rediriger la sortie de yourfile.txt vers le résultat souhaité, newfile.txt. Cela semble être la commande dont vous avez besoin, mais seulement si les fichiers que vous essayez de fusion ne sont pas trop grand pour les tampons de sed:
sed -e :a -e N -e 's/\n/ /' -e ta yourfile.txt >newfile.txt
. Nous remercions un autre forum ici , où ils discutent des capacités de sed. J'ai testé la commande et cela a fonctionné pour moi.la source
-i
commutateur modifiera le fichier d'origine en ligne , il n'est donc pas nécessaire de sortir vers un autre fichier. Attention cependant!a' sed -i :a -e N -i 's/\n/ /' -e ta reval_details.asp?Pno=500214.txt sed: can't find label for jump to
un' sed -e: a -e N -i 's / \ n / /' -e ta reval_details .asp? Pno = 500214.txt sed: impossible de lire s / \ n / /: Aucun fichier ou répertoire de ce type #Any ideas.Solution pure bash:
la source
Si c'était moi, je l'ouvrirais simplement dans vim et appuierais sur Shift+ Jplusieurs fois.
la source
Tapez dans vim et appuyez sur Entrée:
la source
Approche Python:
AWK:
la source