![]() |
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| Parse XML liste des tâches à créer chaque fichier task.xml | Missi | De programmation et de script Shell | 3 | 11-11-2008 02:20 PM |
| commentaire Décommentez et unique tâche de multiples tâches | madhusmita | De programmation et de script Shell | 9 | 06-18-2008 09:42 AM |
| Arithmetic Operators | filda | UNIX pour les nuls Questions et réponses | 0 | 06-13-2008 12:55 AM |
| Puis-je utiliser avec wc-l expression arithmétique? | lalelle | De programmation et de script Shell | 3 | 08-11-2007 06:44 PM |
| l'arithmétique en ksh | amon | De programmation et de script Shell | 12 | 02-05-2007 02:43 AM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
sed ou awk pour tâche arithmétique
J'ai le fichier de ce type de format
01.02.09 08:30 bob jill marque 01.04.09 07:00 bob jill marque tom Je voudrais compter le nom après la date / ime ligne (01.02.09 08:30) et ajouter ce nombre après l'heure comme celle-ci 01.02.09 08:30 3 01.04.09 07:00 4 Je ne suis pas sur les noms après le dépouillement de sorte que je puisse les laisser ou avec la bande sed si elle simplifie le processus. Je pourrais aussi rediriger la sortie de la date / l'heure et compter à la deuxième fichier si cela rend plus simple. La seule chose que j'ai vraiment besoin, c'est la date et l'heure et le numéro sur la même ligne. Quel est le meilleur outil pour accomplir cela et quelqu'un peut-il donner un exemple? |
|
||||
|
Près d'elle
Nice ...
J'ai dû ajouter de l'espace "" et le changement NF-1 à la NF-2 pour obtenir précis pour toutes les lignes sauf la dernière et la première entrée. NF-1 donne le bon de sortie pour la dernière ligne de compte seulement. J'ai 9000 lignes, je avoir le dernier et le premier faux pas est importante. L'autre problème est que la production n'a que le temps dans la ligne comme ceci: 10:00 4 11:00 6 J'ai besoin de la date de la sortie. Actuellement à la recherche par le biais du nawk manuel de savoir comment combiner l'heure et la date de sortie. Toute rapide des suggestions? BTW, la course nawk 1.3.3 d'Ubuntu 8.10 |
|
||||
|
entrée:
Code:
01.02.09 08:30 bob jill mark 01.04.09 07:00 bob jill mark tom 01.02.09 09:30 bob jill mark hj gh fm 01.04.09 10:00 bob jill mark tom aaa bbb ccc Code:
01.02.09 08:30 3 01.04.09 07:00 4 01.02.09 09:30 6 01.04.09 10:00 7 Code:
#!/usr/bin/perl
$/="\n\n";
open FH,"<a.txt";
while(<FH>){
my @temp=split("\n",$_);
print $temp[0]," ",$#temp,"\n";
}
Code:
awk '/[0-9]*\.[0-9]*\.[0-9]* [0-9][0-9]:[0-9][0-9]/{
a=$0
next
}
/^ *$/{
print a" "n
n=0
next
}
{
n++
}
' a.txt
Dernière édition par summer_cherry; au 02.11.2009 11:54 PM.. |
|
|||||
|
Citation:
mar.txt: Code:
01.02.09 08:30 bob jill mark 01.04.09 07:00 bob jill mark tom sortie: Code:
01.02.09 08:30 3 01.04.09 07:00 4 |
|
||||
|
réponse
En utilisant les mêmes données que vous avez eu par exemple, j'ai reçu le texte suivant:
nawk 'BEGIN (FS \u003d RS \u003d "") (print $ 1, NF-1)' donnees.txt 0 27 0 31 Ajout d'espace pour "" $ Nawk 'BEGIN (FS \u003d RS \u003d "") (print $ 1, NF-1)' donnees.txt 01.02.09 0 08:30 4 07:00 4 Changer de NF-2 $ Nawk 'BEGIN (FS \u003d RS \u003d "") (print $ 1, NF-2)' donnees.txt 01.02.09 -1 08:30 3 07:00 3 |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|