WC de commande sous linux
Ce qui suit est le contenu stocké dans mon fichier
This is my Input
À l'aide wc -c commande on peut obtenir le nombre de caractères stockés dans le fichier.
Ma sortie attendue pour le fichier ci-dessus que modifiées à l'aide de VIM dans Ubuntu est de 16 ans. Mais, wc -c commande renvoie 17.
Pourquoi la sortie de ce genre? Il n'est même pas un retour chariot en fin de ligne. Alors, qu'est-ce que le 17ème personnage?
Il y a un supplément de compter pour le saut de ligne.
Mais, je n'ai pas entrer une nouvelle ligne. Je viens d'ouvrir le vim et saisissez le contenu et simplement fermer. Je n'ai pas appuyer sur la touche entrée.
Ensuite, vim est un bon comportement de l'éditeur qui ajoute automatiquement un point de saut de ligne à la fin de la dernière ligne d'un fichier.
Utilisation
Mais, je n'ai pas entrer une nouvelle ligne. Je viens d'ouvrir le vim et saisissez le contenu et simplement fermer. Je n'ai pas appuyer sur la touche entrée.
Ensuite, vim est un bon comportement de l'éditeur qui ajoute automatiquement un point de saut de ligne à la fin de la dernière ligne d'un fichier.
hexdump -C
votre fichier si vous voulez voir les octets.Utilisation
od -c
pour voir les caractères dans le fichier, y compris les nouvelles lignes rtc
OriginalL'auteur mrg | 2015-07-23
Vous devez vous connecter pour publier un commentaire.
de cours que vous avez entrée. peut-être que tu ne peux pas le voir. tenir compte de ces deux exemples:
parce -n est pour éviter d'entrer mais
regardez cet exemple aussi voir la nouvelle ligne.
La façon de voir les retour à la ligne?
od fichiers de vidage en octal et en d'autres formats
-c sélectionnez les caractères ASCII ou des antislashes
Et voici un exemple de fichier et utilisation de l'od
dans ce cas, vous devez entrer
mais par-n vous n'avez pas entrer
Pas vraiment. Envisager
foo="This is my input"
. La chaîne a pas de saut de ligne, MAIS si vous essayez de compter ses charaters avececho "$foo" | wc -c
, une nouvelle ligne est ajoutée par leecho
de commande. Pour compter les caractères dans une chaîne de bash, utiliser${#foo}
.Je n'ai pas dit que c'est faux. C'est le droit. Ma question est "wc -c a.txt". La sortie est de 17 ans. Mais, le résultat attendu est de 16 ans. Je suis également en utilisant la méthode suivante. od-c a.txt. À l'époque, il montre seulement 16. Ici, le '\n' n'est pas ajouté. Alors, pourquoi les wc montre que 17. qu'est-ce que le supplément d'un caractère. C'est à partir d'un fichier ou '\n' qui nous type d'exécuter la commande dans le terminal.
OriginalL'auteur Fattaneh Talebi
Sous Linux, Quand VIM enregistrer les tampons, il mettra fin à chaque ligne, en ajoutant le terminateur de ligne de nouvelle ligne. L'hex dump de VIM fichier édité.
Vous pouvez ouvrir votre fichier d'entrée et de
:!xxd
pour afficher hex dump ou utiliser directementhexdump yourfile
commande.Là vous pouvez le voir, le fichier ont ajouté
0a
à la fin du fichier.ainsi, lorsque vous utilisez
wc -c
pour obtenir le numéro de ce fichier, il sera de retour 17 qui ont inclus la nouvelle ligne de symbole.OriginalL'auteur chengpohi
Vous avez 17 en raison de la '/0' chaeracter.
/0
au lieu de\0
etchaeracter
contrecharacter
. Le caractère supplémentaire d'être compté par wc -c n'est pas un null (0
) c'est un terminateur de ligne, probablement un\n
. Dans un DOS de fichier formaté, vous obtiendrez à 18 ans, car il serait un de deux octets terminateur de ligne\r\n
.OriginalL'auteur Helper
la chaîne d'entrée vous donnant en entrée n'a pas d'entrée/nouvelle ligne, mais l'écho est l'assignation de l'entrée/le retour à la ligne. Et wc -c lectures entrée ou retour à la ligne de donnée par la commande echo.
par exemple
renvoie 2 car 1 pour k et 1 pour la nouvelle ligne ajoutée par echo
tout
retourne 1 car -n supprime le saut de ligne.
mais wc -c se lit toujours de retour à la ligne.
Vous pouvez essayer
retourne 1
voir ce qu'Il fait dans le fichier
ok, essayez ceci. echo "Ceci est mon Input" > a.txt ensuite, exécutez wc -c a.txt et printf "Ceci est mon Input" > a.txt et puis, wc -c a.txt. Vous savez la différence, je suis en train de parler.
Iam utilisant ubuntu. Éditeur vim
Je suis sous Linux shell ksh et de l'éditeur vi. Vous pouvez le tester sur invite de commandes.exécuter echo "Mon" , en sortie, vous obtiendrez la prochaine invite en retour à la ligne et exécuter echo-n "Mon" ou " printf "Mon" , en sortie, vous obtiendrez invite juste après le Ma chaîne.
OriginalL'auteur Shravan Yadav