2010-11-01 8 views
1

String Exemple: a.txtextraire les valeurs à l'aide grep

Reading:RG1:+ /user/reading/Monday:12 
Reading:RG1:- /user/**/Friday:12 
Reading:RG1:- /user/**/*.txt:12 
Reading:RG1:- /user/tet/**/*.txt:12 

Je cherche à extraire la chaîne

after + or - what ever the string i want it 

utilisant:

cat a.txt | grep RG1|grep '+'| cut -d':' -f3| cut -d'+' -f2 |sed -e 's/ // 

Je reçois /utilisateur/lecture/lundi

Mais j'amlooking

/user/lecture/Lundi: 12

+0

Je pense que la réponse acceptée par vous ne fonctionne pas pour une chaîne contenant '-' cas. Parce que vous coupez seulement '+' ':' seulement (pas '-') – Alam

+0

j'ai le même code pour - aussi .. son fonctionnement .. – Tree

Répondre

1

Pour résoudre votre commande, utilisez -f3- car vous voulez tout du 3ème champ à la fin de la ligne.

cat a.txt | grep RG1|grep '+'| cut -d':' -f3-| cut -d'+' -f2 |sed -e 's/ //' 
+0

Quel est le but de sed -e 's///' ici? – Alam

+1

Ne fonctionne pas, correspond seulement '/ user/reading/Monday: 12'. –

+1

C'est ce que veut le PO. De la question: 'Je reçois/utilisateur/lecture/lundi Mais je regarde/utilisateur/lecture/lundi: 12'. Je viens de fixer son commandement pour lui. – dogbane

3

Utilisation egrep -o:

$ egrep -o '/user/reading/[A-Z][a-z]+day:[0-9]+' a.txt 
/user/reading/Monday:12 
/user/reading/Friday:12 

Modifier: pour votre nouvel exemple, utiliser quelque chose comme

$ egrep -o '/user/[^ ]*:[0-9]+' a.txt 
/user/reading/Monday:12 
/user/**/Friday:12 
/user/**/*.txt:12 
/user/tet/**/*.txt:12 

En supposant pas d'espaces dans vos chemins.

+0

je ne sais pas ce que ce chemin tout le temps .. comme ceci:/user/lecture/.et il ne sera pas tout le temps le même format comme ça .. un certain temps, il peut être regex aussi – Tree

+0

Si ce n'est pas toujours ce format, alors s'il vous plaît envoyer ce que ça va ressembler. –

+0

done .............................. – Tree

1
$ grep -Po '(?<=[-+]).*' a.txt 
/user/reading/Monday:12 
/user/**/Friday:12 
/user/**/*.txt:12 
/user/tet/**/*.txt:12 

Modifiez les caractères avec les crochets pour changer les lignes que vous sélectionnez.

Questions connexes