J'ai un fichier tel que le suivant:
1234
ABCD
EFGH
Je voudrais le convertir comme suit:
2341
BCDA
FGHE
Le fichier réel contient 4 000 mots, je voudrais donc le faire de manière efficace. J'ai essayé d'utiliser la commande cut -c 2-4,1 file.txt
, mais elle produit la même sortie exacte que l'entrée. Je pensais pouvoir utiliser 3 commandes différentes:
cut -c 1 file.txt > temp1.txt
cut -c 2-4 file.txt > temp2.txt
// combine the two with paste or pr
... mais je préférerais une seule commande car je dois l'exécuter plusieurs fois avec de légères modifications, donc exécuter une commande est moins sujet aux erreurs que d'exécuter 3 commandes à chaque fois.
Existe-t-il un moyen de combiner les 2 déclarations coupées en une seule? Quelque chose comme:
cut -c 1 file.txt | pr (cut -c 2-4 file.txt)
Ou existe-t-il une meilleure façon de procéder?
text-processing
cut
Sensé
la source
la source
-d ''
au lieu de--delimiters=''
pour réutiliser les caractères de la LISTE au lieu des ongletsSi vous utilisez bash, utilisez l'indexation de chaîne de l' expansion des paramètres :
la source
Vous pouvez changer le séparateur via "-F" en fonction de vos données et organiser l'ordre des champs de manière arbitraire.
la source
Voici un moyen avec
perl
:Fractionnement automatique aux limites des lettres, faites-en pivoter un vers la gauche et imprimez.
la source
J'ai trouvé une alternative sous forme de script:
Le script coupe les chaînes dans des fichiers séparés. Rejoignez ensuite un nouveau fichier (file4.txt) Et supprimez enfin les fichiers de rechange.
la solution llua est plus propre à mon goût.
la source
Avez-vous essayé rev?
~$ cat filename | rev
la source