Voici un exemple d'utilisation cut
pour briser la saisie dans des champs à l'aide d'un séparateur d'espaces et obtenir le second champ:
cut -f2 -d' '
Comment le délimiteur peut-il être défini comme un onglet, au lieu d'un espace?
Voici un exemple d'utilisation cut
pour briser la saisie dans des champs à l'aide d'un séparateur d'espaces et obtenir le second champ:
cut -f2 -d' '
Comment le délimiteur peut-il être défini comme un onglet, au lieu d'un espace?
Réponses:
Deux façons:
Appuyez sur Ctrl+ Vpuis sur Tab.
cut -f2 -d' ' infile
ou écrivez-le comme ceci:
cut -f2 -d$'\t' infile
-d
argument).
ksh93
, pas bash
. Cela est au moins supporté par ksh93, zsh, bash, mksh et FreeBSD ( il pourrait en être de même pour la prochaine inversion majeure de la spécification standard POSIXsh
).
Tab est la valeur par défaut.
Voir la page de manuel de coupe .
-d delim
Use delim as the field delimiter character instead of the tab
character.
Donc, vous devriez juste écrire
cut -f 2
cut
pour Windows ne suivraient pas la norme complète.
cut
pour Windows et ne suit pas la spécification Posix , pour elle, il n'y a aucune raison de supposer que tout script POSIX fonctionnera avec ce système. S'en tenir aux fonctionnalités spécifiées par POSIX. N'essayez pas de permettre de futures mises en œuvre hypothétiques non conformes; ce n'est pas ce que "portabilité" signifie.
De manière plus générique, sans requérir de caractères invisibles: utilisez-le tr
pour convertir les délimiteurs en un format qui peut être spécifié plus facilement cut
.
$ echo -e "a\tb\tc" |tr '\t' ' ' |cut -d' ' -f2
b
tr
est un outil simple, mais puissant, de correspondance et de remplacement de personnage.
abc(space)def(tab)ghi
? Votre réponse cédera def
, mais elle devrait céder ghi
. De même, si l'entrée est ABC(tab)DEF(space)GHI
, votre réponse donnera DEF
, mais elle devrait céder DEF(space)GHI
.
echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2