grep suis entrée comme echo stdin ou vous pouvez également utiliser cat de commande si vous avez un de ces chaînes dans un fichier.
-E Interpréter le MOTIF comme une expression régulière étendue.
-o Afficher uniquement la partie d'une correspondance de la ligne qui correspond au MODÈLE.
[[:digit:]] Il va chercher le chiffre seulement de l'entrée.
{N} Il vérifiera N nombre de chiffres dans une chaîne donnée, c'est à dire: 4 pour les 2 ans pour les mois et les jours
Plus important encore, il va chercher sans l'aide des séparateurs comme "_" et "." et c'est pourquoi Il est plus flexible solution.
Pourquoi vous avez ajouté xargs à la dernière? J'ai eu quelque chose dans l'esprit, mais il n'a pas besoin, alors je l'ai enlevé @AvinashRaj Salut,Merci. Je voudrais savoir comment puis-je l'utiliser dans le script shell?? je veux attribuer à une variable Aussi un point de plus.. mon nom de fichier est le chemin complet du fichier. /dir1/dir2/filename il n'y aurait pas de problème sur ce
$ ls -1 abcd_2014-05-20.tar.gz | grep -oP '[\d]+-[\d]+-[\d]+'2014-05-20
-o causes grep pour n'imprimer que la partie correspondant
-P interprète le motif comme expression rationnelle perl
[\d]+-[\d]+-[\d]+: désigne un ou plusieurs chiffres suivi d'un tiret (3 fois) qui correspond à votre date.
vous n'avez pas besoin de mettre \d à l'intérieur d'une classe de personnage, juste grep -oP '\d+-\d+-\d+' ce serait bien. Pour plus de précision grep -oP '\d{4}-\d{2}-\d{2}' , Certains grep ne prend pas en charge P dans ce cas, utilisez E au lieu de P comme grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}' merci @AvinashRaj appris quelque chose aujourd'hui
Ici temp tiendra chaîne de caractères dans un nom de fichier post "_" c'est à dire 2014-05-20.tar.gz
Ensuite, vous pouvez extraire la date en retrait .tar.gz à partir de la fin.
Vous n'avez pas besoin d'avoir une capture d'un groupe. Juste sed 's/^[^_]*_\|\..*//g' serait 5in.
Je vous remercie.. Comment puis-je l'attribuer à une variable et utiliser tht var evrywherE? DATE=$(echo "abcd_2014-05-20.tar.gz" | cut-d "_" -f2 | cut-d "." -f1). de même pour les autres commandes. Sinon: DATE=mycommand...
De sortie:
grep
suis entrée commeecho
stdin ou vous pouvez également utilisercat
de commande si vous avez un de ces chaînes dans un fichier.-E
Interpréter le MOTIF comme une expression régulière étendue.-o
Afficher uniquement la partie d'une correspondance de la ligne qui correspond au MODÈLE.[[:digit:]]
Il va chercher le chiffre seulement de l'entrée.{N}
Il vérifiera N nombre de chiffres dans une chaîne donnée, c'est à dire: 4 pour les 2 ans pour les mois et les joursPlus important encore, il va chercher sans l'aide des séparateurs comme "_" et "." et c'est pourquoi Il est plus flexible solution.
xargs
à la dernière?J'ai eu quelque chose dans l'esprit, mais il n'a pas besoin, alors je l'ai enlevé @AvinashRaj
Salut,Merci. Je voudrais savoir comment puis-je l'utiliser dans le script shell?? je veux attribuer à une variable
Aussi un point de plus.. mon nom de fichier est le chemin complet du fichier. /dir1/dir2/filename
il n'y aurait pas de problème sur ce
OriginalL'auteur Skynet
Utilisation de awk personnalisé pour le séparateur de champ, c'est assez simple:
OriginalL'auteur anubhava
Utilisation
grep
:-o
causes grep pour n'imprimer que la partie correspondant-P
interprète le motif comme expression rationnelle perl[\d]+-[\d]+-[\d]+
: désigne un ou plusieurs chiffres suivi d'un tiret (3 fois) qui correspond à votre date.\d
à l'intérieur d'une classe de personnage, justegrep -oP '\d+-\d+-\d+'
ce serait bien. Pour plus de précisiongrep -oP '\d{4}-\d{2}-\d{2}'
, Certains grep ne prend pas en chargeP
dans ce cas, utilisezE
au lieu deP
commegrep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}'
merci @AvinashRaj appris quelque chose aujourd'hui
OriginalL'auteur chaos
Je vais utiliser une forme d'expression régulière avec le "grep" de commande, selon la façon dont votre nom de fichier est créé.
Si votre date est toujours après "_" char je vais utiliser quelque chose comme cela.
Où REGEXP est votre expression régulière en fonction de votre format de date.
Prendre un coup d'oeil ici http://www.linuxnix.com/2011/07/regular-expressions-linux-i.html
OriginalL'auteur acostela
Plusieurs façons vous pouvez le faire:
sed extrait de la date et de l'imprimer.
D'une autre manière:
Ici temp tiendra chaîne de caractères dans un nom de fichier post "_" c'est à dire 2014-05-20.tar.gz
Ensuite, vous pouvez extraire la date en retrait .tar.gz à partir de la fin.
sed 's/^[^_]*_\|\..*//g'
serait 5in.OriginalL'auteur SMA
Ici quelques exemples,
cut
de commande (cut donne plus de lisibilité commeawk
commande)De sortie est:
grep
commnadDe sortie est:
2014-05-20
Un autre avantage de l'utilisation de
grep
format de la commande est que, il sera également aider à extraire plusieurs dates comme ceci:De sortie est:
DATE=$(echo "abcd_2014-05-20.tar.gz" | cut-d "_" -f2 | cut-d "." -f1). de même pour les autres commandes.
Sinon: DATE=
mycommand...
OriginalL'auteur Balaji Reddy