2015-11-21 1 views
-2

Mon exemple chaîne est dans le fichier txt /www/meteo/last.txt:Comment extraire le texte d'un fichier à un fichier en utilisant sed ou grep?

a:3:{i:0;s:4:"6.13";i:1;s:5:"19.94";i:2;s:5:"22.13";}

Je voudrais obtenir ligne par ligne 3 numéros de ce fichier dans un nouveau fichier. (ces valeurs est la température de sorte qu'ils changent dans le temps - toutes les 10 minutes)

Nouveau /www/meteo/new.txt fichier: (ligne par ligne)

6.13 
19.94 
22.13 

Répondre

0

Essayez cette méthode awk

awk -F'"' 'BEGIN{OFS="\n"} {print $2,$4,$6}' last.txt > new.txt 

OutPut:

cat new.txt 
6.13 
19.94 
22.13 
+0

J'ai modifié votre méthode. Maintenant c'est: awk -F '"' BEGIN {OFS =" \ n "} {print $ 2} 'last.txt> temp1.txt awk -F' '' 'BEGIN {OFS =" \ n "} {print $ 4} 'last.txt> temp2.txt awk -F' '' 'BEGIN {OFS =" \ n "} {print $ 6}' last.txt> temp3.txt –

0

Ou, si vous vouliez utiliser sed ou grep:

sed -r 's/([^"]*)("[^"]*")([^"]*)/\2\n/g;s/"//g' /www/meteo/last.txt

grep -Eo '"[^"]*"' /www/meteo/last.txt | sed 's/"//g'

Si vous voulez une valeur spécifique, permet de dire la deuxième température entre guillemets, vous pouvez utiliser sed:

grep -Eo '"[^"]*"' /www/meteo/last.txt | sed -n '2p'

+0

Bonjour, cela semble bien pour moi mais je voudrais avoir la sortie sans "..." quota :) –

+0

@Marek J'ai mis à jour la réponse pour débarrasser les citations.En général, vous pouvez prendre la correspondance et supprimer les citations avec un simple 'sed 's/"// g''. –

+0

Merci, ça marche:] –