1 votes

Comment supprimer une partie d'une ligne et garder le reste en utilisant Bash ?

Supposons que j'ai une sortie de lignes comme celle-ci :

First name, Last name, 123456789(9 digits)
GPA
Class
Major
University

Comment puis-je écrire un code pour imprimer les 3 premières lignes et ne garder que le numéro d'identification sur la première ligne ?

J'ai essayé d'utiliser head , grep y cut mais je n'ai pas pu le faire.

3voto

steeldriver Points 118154

Vous pourriez utiliser awk, pour imprimer le dernier champ séparé par des virgules et des espaces :

$ cat file
First name, Last name, 123456789
GPA
Class
Major
University

$ awk -F', ' 'NR<4 {print $NF}' file
123456789
GPA
Class

ou sed pour remplacer la chaîne la plus longue jusqu'à l'espace-virgule :

$ sed -n '1,3{s/.*, //; p}' file
123456789
GPA
Class

2voto

BeastOfCaerbannog Points 8327

Une simple instruction if-else fonctionne également avec awk . Dans ce qui suit, nous utilisons la virgule comme séparateur de champ ( -F', ' ) et imprimer le 3ème champ ( $3 ) si nous sommes sur la première ligne ( NR == 1 ), sinon la ligne entière ( $0 ) pour les 3 premières lignes ( NR < 4 ) est imprimé :

awk -F', ' '{if (NR == 1) print $3; else if (NR < 4) print $0}' file

1voto

ubfan1 Points 14936

Si votre fichier comporte plusieurs entrées de ce type au lieu d'une seule, essayez :

cat file |tr "," "\n" |grep "[0-9]\{9\}" -A3

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X