Question

Besoin de grep uniquement le mot entre le 2ème et le 3ème pour durer /

Ceci est montré dans l'extrait ci-dessous, pour noter que l'emplacement sur le nom de fichier n'est pas toujours le même en comptant depuis l'avant.Toutes les idées seraient utiles.

/ home / user / Drive-backup / 2010 Backup / 2010 Account / Jan / usernameneedtogrep / user.dir / 4.txt

Était-ce utile?

La solution

J'utiliserais awk:

awk -F/ '{print $(NF-2)}'
  • se divise sur /
  • NF est l'index de la dernière colonne, $NF la dernière colonne elle-même et $(NF-2) la 3e à la dernière colonne.

Vous devrez bien sûr d'abord filtrer les lignes de votre entrée qui ne sont pas des chemins (par exemple en utilisant grep puis en redirigeant vers awk)

Autres conseils

Voici un script Perl qui fait le travail:

my $str = q!/home/user/Drive-backup/2010 Backup/2010 Account/Jan/usernameneedtogrep/user.dir/4.txt!;
my $res = (split('/',$str))[-3];
print $res;

usernameneedtogrep

une expression régulière comme celle-ci devrait faire l'affaire:

/.\/(.+?)\/.*?\/.*$/

(notez que j'utilise des recherches paresseuses (+? et *?) afin qu'elles n'incluent pas de barres obliques là où nous ne le voulons pas)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top