![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui. |
Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
|
||||
| Fio | Thread Starter | Fórum | Respostas | Última postagem |
| Parse XML uma lista de tarefas para criar cada arquivo task.xml | MissI | Programação Shell Script e | 3 | 11-11-2008 02:20 |
| comentar e Descomente a única tarefa de múltiplas funções | madhusmita | Programação Shell Script e | 9 | 06-18-2008 10:42 |
| Operadores aritméticos | filda | UNIX para Dummies Perguntas & Respostas | 0 | 06-13-2008 01:55 |
| Posso usar o wc-l com expressão aritmética? | lalelle | Programação Shell Script e | 3 | 08-11-2007 07:44 |
| aritmética em ksh | amon | Programação Shell Script e | 12 | 02-05-2007 02:43 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
sed ou awk para a tarefa aritmética
Tenho arquivo com este tipo de formato
01.02.09 08:30 bob jill marca 01.04.09 07:00 bob jill marca Tom Eu quero contar os nomes após a data / ime linha (01.02.09 08:30) e adicionar esse número após o momento como este 01.02.09 08:30 3 01.04.09 07:00 4 Não me importo com os nomes após a contagem, assim posso deixá-los ou tiras a sair com sed se simplifica o processo. Eu também poderia redirecionar a saída de data / hora e contar para a segunda arquivo se torna mais simples. A única coisa que eu realmente preciso é a data / hora e número na mesma linha. Qual é a melhor ferramenta para conseguir isto e alguém pode fornecer um exemplo? |
|
||||
|
Quase isso
Nice ...
Eu tive de adicionar o espaço para "" e altere a NF-1 NF-2 para obter contagem rigorosa de todas as linhas exceto a última ea primeira entrada. NF-1 dá a saída correta para a última linha contam apenas. Tenho 9.000 linhas para eu ter a última e primeira questão errada não é significativo. O próximo problema é que a produção só tem o tempo na linha como esta: 10:00 4 11:00 6 Preciso da data de saída. Atualmente olhando através da nawk manual para descobrir como combinar a hora ea data em produção. Qualquer rápido sugestões? BTW, executando nawk 1.3.3 do Ubuntu 8/10 |
|
||||
|
entrada: Código:
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 Saída: Código:
01.02.09 08:30 3 01.04.09 07:00 4 01.02.09 09:30 6 01.04.09 10:00 7 código: Código:
#!/usr/bin/perl
$/="\n\n";
open FH,"<a.txt";
while(<FH>){
my @temp=split("\n",$_);
print $temp[0]," ",$#temp,"\n";
}
Código:
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
Última edição por summer_cherry; em 02/11/2009 11:54.. |
|
|||||
|
Citação:
mar.txt: Código:
01.02.09 08:30 bob jill mark 01.04.09 07:00 bob jill mark tom nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-1)' mar.txt Saída: Código:
01.02.09 08:30 3 01.04.09 07:00 4 Parece-me multa. Publique o seu arquivo de entrada (ou uma parte dele), utilizando mB Código tags. |
|
||||
|
resposta
Usando os mesmos dados que você tinha exemplo, eu tenho o seguinte:
nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-1)' data.txt 0 27 0 31 Adicionando espaço em "" $ Nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-1)' data.txt 01.02.09 0 08:30 4 07:00 4 Alterando a NF-2 $ Nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-2)' data.txt 01.02.09 -1 08:30 3 07:00 3 |
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|