Supposons que j'ai un fichier:
Fichier1:
PAPER TEAM MANISH NISHA GARIMA JYOUTI ........etc
File2 je veux:
PAPER
TEAM
MANISH
NISHA
GARIMA
JYOUTI
Conversion des lignes en colonnes de File1.
awk
sed
text-formatting
yisha
la source
la source
Réponses:
À l'aide de
tr
, remplacez chaque caractère d'espace répété () par un seul caractère de nouvelle ligne (
\n
).Mais je pense que tu veux quelque chose comme ça?
Avec
awk
nous pourrions faire:Ceci joint chaque même position de numéro déposé dans et
END
imprime le résultat qui serait la première ligne dans la première colonne, la deuxième ligne dans la deuxième colonne, etc. Bien sûr, le fichier d'entrée est limité à la taille de votre mémoire.la source
Vous pouvez simplement le faire via grep. Par défaut, grep afficherait la correspondance dans une nouvelle ligne distincte.
OU
la source
grep
Vous pouvez également utiliser la
fmt
commande:la source
Avec GNU datamash :
la source
datamash
semble être le meilleur outil pour la tâche, mais fascinant combien d'autres outils pourraient être utilisés!Vous pouvez également le faire en utilisant
sed
:REMARQUE: ne gère pas la situation où les mots contiennent des espaces.
la source
\n
comme une nouvelle ligneÀ l'aide de
awk
, définissez le séparateur de champ de sortie (OFS
) comme séparateur d' enregistrement (ligne) (RS
):la source
Utiliser une
for
boucle:la source
Vous pouvez également essayer d'utiliser
sed
Veuillez noter que j'utilise
@
comme séparateur pour l'opération de substitution. Cela créera également un fichier de sauvegarde. Si vous n'avez pas besoin d'une sauvegarde, supprimez .bakla source
Version Python:
Cela utilise la
<
redirection dans le stdin de python à partir deinput.txt
et écrit à l'output.txt
aide de la>
redirection. Le one-liner lui-même lit dans toutes les lignes destdin
dans une liste de chaînes, où tous les espaces sont remplacés par des retours à la ligne, et nous reconstruisons le texte entier en utilisant la.join()
fonction.Une approche alternative pour éviter que plusieurs espaces en série ne soient remplacés par des retours à la ligne consiste
.split()
à séparer la ligne en liste de mots. De cette façon, nous pouvons nous assurer que chaque mot n'est séparé que par une nouvelle lignela source
En utilisant
xargs
, (volé de la réponse de souravc ):Ou si un reformatage mineur est nécessaire, utilisez des
printf
chaînes de format comme cela pourrait être nécessaire:la source
Ma solution serait:
la source
la source