web-dev-qa-db-fra.com

Commande Couper pour spécifier l'onglet comme délimiteur

Il y a un fichier dont le délimiteur est tab, quand j'utilise la commande

cut -d \t file.txt  #or  "\t"  or  "\\t"

Je reçois ce message

cut: vous devez spécifier une liste d'octets, de caractères ou de champs

Essayez `cut --help 'pour plus d'informations.

Comment utiliser la commande cut?

15
it_is_a_literature

Couper divise les lignes d'entrée au délimiteur donné (-d, --delimiter).

Pour diviser par onglets, omettez l'option -d, car la division par onglets est la valeur par défaut.

En utilisant l'option -f (--fields), vous pouvez spécifier les champs qui vous intéressent.

echo -e "a\tb\tc" |cut -f 1 # outputs "a"
echo -e "a\tb\tc" |cut -f 2 # outputs "b"
echo -e "a\tb\tc" |cut -f 3 # outputs "c"
echo -e "a\tb\tc" |cut -f 1,3 # outputs "a\tc"
echo -e "a\tb\tc\td\te" |cut -f 2-4 # outputs "b\tc\td"

Vous pouvez également spécifier le délimiteur de sortie (--output-delimiter) et supprimer les lignes ne contenant aucun délimiteur (-s/- only-delimited)

echo -e "a\tb\tc\td\te" |cut -f 2-4 --output-delimiter=":" # outputs b:c:d

Si vous êtes intéressé par le premier champ de votre fichier d'entrée, faites simplement ...

cut -f 1 file.txt
21
bikeshedder

Le délimiteur par défaut est '\ t', il vous suffit donc d'exécuter:

cut -f <n> file.txt

<n> est le numéro de la colonne

16
OnaBai

Vous pouvez essayer de placer un onglet entre les guillemets si vous appuyez d'abord sur "v" puis sur la touche ""

eg  cat > test.txt 
a    b     c
<ctrl d>

$ grep test.txt | cut -f 2 -d "<ctrl v> <presstab>"

renverra "b"