J'ai une colonne spécifique dans un fichier qui contient des chaînes telles que ceci: Je veux le résultat numérique: p> J'ai essayé cela, veuillez noter que les tailles figurent sur la 6ème colonne de mon fichier: p> edit1 mon fichier d'entrée ressemble à ceci: p> La multiplication est ignorée. p> pouvez-vous aider? p> p>
6 Réponses :
Ceci est un moyen générique pour évaluer la chaîne, il pourrait traiter * code>,
+ code>,
- code>,
/ code > Etc. Si vous pouvez utiliser
perl code>, il est possible d'option à
eval code> la chaîne, cela évaluera la chaîne pour l'opération mathématique de l'entrée.
Merci beaucoup pour votre perl one-liner, je l'aime. Maintenant, j'ai tapé cela pour résumer toutes les tailles qui sont sur la 6e Colum, c'est que OK: perl -nale '$ Taille + = EVAL $ F [-1] if / mp4 /; fin $ Taille}' fichier code>?
Oui, vous pouvez le faire, en supposant que vous soyez sûr que la chaîne d'intérêt est toujours dans la dernière colonne.
Pourriez-vous s'il vous plaît essayer de suivre (testé et écrit après avoir vu des échantillons fournis uniquement).
awk '{split($NF,array,"*");printf("%.01f\n",array[1]*array[2])}' Input_file
Les tailles sont sur la 6ème colonne de mon fichier d'entrée
@Sebma, mais vos échantillons montrent que c'est la 1ère et la 2e colonne Si je considère le séparateur de champ comme * code>, veuillez publier votre exemple d'exemple_fon_file dans votre message et indiquez-nous alors.
Je viens d'ajouter une édition1
Utilisez * code> ou espace comme séparateur de champ et utilisez la deuxième dernière et dernière colonne:
awk -f '[*]' '{printf ("%. 1f \ n", $ (nf-1 " ) * $ Nf)} 'fichier code>
sprintf code> ne peut pas évaluer les opérations elles-mêmes. Vous devez analyser et les évaluer, puis
sprintf code> peut être utilisé pour convertir le résultat en une chaîne avec un format spécifique.
$ awk -v OFS=' ' 'split($NF,a,/\*/)>1{$NF=a[1]*a[2]} 1' file
[[ ]] toto1.mp4 2019-04-16 22:11 1126.4
[[ ]] toto2.mp4 2019-04-16 21:41 1024
[[ ]] toto3.mp4 2019-04-16 22:40 1126.4
[[ ]] toto4.mp4 2019-04-16 22:09 1126.4
AWK ne peut pas évaluer les expressions dans des variables, vous devez construire un évaluateur pour cela ou évaluer une autre manière, comme: sortie: p> Il y a des programmes AWK flottant autour qui peuvent évaluer, par exemple calc3 code>. Google est votre ami, mon ami. P> p>
Est-ce ce que vous essayez de faire?
Si les données dans d code> fichier, essayé sur GNU AWK:
awk -F'\\*' '{a=$1*$2; printf "%-6.1f\n",a}' d
@Oguzismail Les tailles sont sur la 6ème colonne de mon fichier d'entrée
@oguzismail je viens d'ajouter une édition1
Est l'opération arithmétique toujours
* code> ou pourrait-il parfois être
+ code> ou
/ code> ou ...????