Ni ne fonctionne dans Windows (par exemple, Git Bash) de toute évidence. Utilisez la réponse de @ Mikel ici (le délimiteur par défaut est Tabulation, omettez tout simplement l' -dargument).
Mais il est probablement toujours plus sûr de mentionner explicitement ces drapeaux, à la fois pour la lisibilité et la portabilité. J'imagine que certaines personnes qui conçoivent cutpour Windows ne suivraient pas la norme complète.
Willem Van Onsem le
3
Cela devrait être une réponse acceptée: code le plus simple, explication la plus simple. ya cloué: youtube.com/watch?v=dpNTHl7y45Y
Neuronet
5
Cette réponse a changé ma vie
matheeeny
1
@WillemVanOnsem, si quelqu'un écrit une version cutpour 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.
Wildcard
12
awk -F '\t''{ print $2 }' inputfile
Ceci extrait le deuxième champ délimité par des tabulations de chaque ligne d’entrée inputfile.
De manière plus générique, sans requérir de caractères invisibles: utilisez-le trpour 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.
Mais que faire si l'entrée est 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.
G-Man
@ G-Man: Le délimiteur d'espace n'était qu'un exemple. Utilisez le délimiteur approprié pour vos données, par exemple une virgule. echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2
novembre
... Mais oui, si le délimiteur doit être un onglet, mon approche ne fonctionnera pas.
Réponses:
Deux façons:
Appuyez sur Ctrl+ Vpuis sur Tab.
ou écrivez-le comme ceci:
la source
-d
argument).ksh93
, pasbash
. 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 .
Donc, vous devriez juste écrire
la source
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.Ceci extrait le deuxième champ délimité par des tabulations de chaque ligne d’entrée
inputfile
.la source
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 facilementcut
.tr
est un outil simple, mais puissant, de correspondance et de remplacement de personnage.la source
abc(space)def(tab)ghi
? Votre réponse céderadef
, mais elle devrait céderghi
. De même, si l'entrée estABC(tab)DEF(space)GHI
, votre réponse donneraDEF
, mais elle devrait céderDEF(space)GHI
.echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2