2011-04-29 2 views

Répondre

8
perl -ne "print uc" < input.txt 

Le -n enveloppe votre script de ligne de commande (qui est fourni par -e) dans une boucle while. Un uc renvoie la version ALL-UPPERCASE de la variable par défaut $_, et ce que print fait, eh bien, vous le savez vous-même. ;-)

Le -p est juste comme -n, mais il fait un print en plus. Encore une fois, en agissant sur la variable par défaut $_.

Pour stocker que dans un fichier de script:

#!perl -n 
print uc; 

appel comme ceci:

perl uc.pl <in.txt> out.txt 
+0

ajouter '-C' pour les fichiers utf-8, par exemple,' echo aßbc | perl -C -ne'print uc'' -> 'ASSBC'. – jfs

+0

Merci, Michael! Cela a fonctionné pour moi. L'info était utile et je l'ai modifiée pour la sortie dans un fichier, ce qui était simple. Pour les autres novices, vous devez mettre des guillemets autour du répertoire et du nom de fichier si ce n'est pas dans le répertoire courant. – salvationishere

+0

Juste une autre question de suivi ... Comment puis-je écrire ceci et le stocker dans un fichier Perl? Alors que je lui donne juste les arguments du fichier d'entrée et du fichier de sortie? – salvationishere

3
$ perl -pe '$_= uc($_)' input.txt > output.txt 
+0

Merci Matthew. J'ai essayé ceci mais je l'ai légèrement modifié avec l'information d'annuaire. Cependant, cela me donne l'erreur: "Impossible de trouver la terminaison de chaîne" '"n'importe où avant EOF à -e ligne 1" – salvationishere

2

perl -pe '$_ = uc($_)' input.txt > output.txt

Mais alors vous ne même pas besoin de Perl si vous utilisez Linux (ou * nix). D'autres moyens sont les suivants:

awk:

awk '{ print toupper($0) }' input.txt >output.txt

tr:

tr '[:lower:]' '[:upper:]' < input.txt > output.txt

+0

Merci pour l'info. Je n'utilise pas Linux cependant. – salvationishere

+0

Ok, np. Bien que Perl soit d'une grande aide pour les utilisateurs de Linux, j'ai toujours pensé que c'était beaucoup plus utile pour les utilisateurs de Windows; juste parce que Linux est si riche en outils qu'une seule tâche peut être accomplie grâce à plusieurs de ses utilitaires standards. –

0
$ perl -Tpe " $_ = uc; " -- 

$ perl -MO=Deparse -Tpe " $_ = uc; " -- a s d f 
LINE: while (defined($_ = <ARGV>)) { 
    $_ = uc $_; 
} 
continue { 
    die "-p destination: $!\n" unless print $_; 
} 
-e syntax OK 

$ cat myprogram.pl 
#!/usr/bin/perl -T -- 
LINE: while (defined($_ = <ARGV>)) { 
    $_ = uc $_; 
} 
continue { 
    die "-p destination: $!\n" unless print $_; 
} 
Questions connexes