![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| UNIX para Dummies Perguntas & Respostas Se não tiver certeza de onde se pode postar uma pergunta Unix ou Linux, postá-lo aqui. Todos os UNIX e Linux novatos bem vindos! |
Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
|
||||
| Fio | Thread Starter | Fórum | Respostas | Última postagem |
| count não de palavras em uma linha | satish @ 123 | Programação Shell Script e | 7 | 05-21-2008 03:59 |
| Necessidade de identificar a linha que contém @, entre a linha de um arquivo | b.paramanatti | UNIX para Dummies Perguntas & Respostas | 4 | 11-04-2007 10:50 |
| separar as palavras de uma linha? | skyineyes | Programação Shell Script e | 3 | 06-26-2007 10:00 |
| eliminação da linha e duplicar linha | ocelote | UNIX para Dummies Perguntas & Respostas | 11 | 01-30-2007 12:44 |
| Duplicar palavras | zulander | UNIX para Dummies Perguntas & Respostas | 1 | 04-01-2001 04:11 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Oi, Deixe-me explicar o problema claramente: Deixe as entradas no meu arquivo ser: Código:
lion,tiger,bear apple,mango,orange,apple,grape unix,windows,solaris,windows,linux red,blue,green,yellow orange,maroon,pink,violet,orange,pink Podemos detectar as linhas em que uma das palavras (separadas por um campo de separação) ocorre mais de uma vez, usando um comando (ou comando tubo)? Neste caso, o comando deve detectar as linhas 2,3,5. Eu é realizado utilizando um perl script (citados abaixo), mas pergunto-me se isto poderia ser feito através de um comando (a dificuldade é que o não. de colunas não é constante). Perl programa que eu usei: Código:
$fname=<STDIN>;
chomp $fname;
open(file,"<$fname");
$found_dups=0;
for $line(<file>)
{
chomp $line;
@arr=split(/,/,$line);
for($i=1;$i<=$#arr;$i++)
{
for($j=$i+1;$j<=$#arr;$j++)
{
if($arr[$i] eq $arr[$j])
{
print "tid $arr[0]\n";
$found_dups++;
}
}
}
}
print "Found $found_dups duplicates\n";
Obrigado, Srini |
|
||||
|
Se você tiver o Python, aqui vai uma sucinta alternativa: Código:
#!/usr/bin/python
for line in open("file"):
line = line.strip().split(",")
if len(line) == len(set(line)):
print "No change"
else:
print ','.join(line)
Saída: Código:
# ./test.py No change apple,mango,orange,apple,grape unix,windows,solaris,windows,linux No change orange,maroon,pink,violet,orange,pink |
|
||||
|
awk-F, '(
for (i \u003d 1; I <NF; i + +) ( para (J \u003d I +1, J <\u003d NF; J + +) ( if ($ i \u003d\u003d $ j) (print $ I ":" $ 0) ) ) ) '<<ENDOFFILE leão, tigre, urso maçã, manga, laranja, maçã, uva Unix, Windows, Solaris, Windows, Linux vermelho, azul, verde, amarelo laranja, castanho-avermelhado, rosa, violeta, laranja, rosa ENDOFFILE Apple: maçã, manga, laranja, maçã, uva janelas: Unix, Windows, Solaris, Windows, Linux laranja: laranja, castanho-avermelhado, rosa, violeta, laranja, rosa rosa: laranja, castanho-avermelhado, rosa, violeta, laranja, rosa |
|
||||
|
Oi,
Thanx para as sugestões. Entendo que o trabalho pode ser feito por diferentes variações de scripts, mas estou ansioso sobre o que é "um único comando / comando cachimbo", que podem fazer o trabalho. Se houver apenas determinado número de entradas em cada linha, posso compará-los manualmente na linha de comando usando awk /perl. Mas desde que eu não sei o n º. de entradas em cada linha, a tarefa é complicada. Gostaria de ser esclarecido se eu receber uma versão do comando canalização destes scripts. Obrigado Srini |
|
||||
|
Novamente com a perl, mas muito mais simples ![]() Código:
#! /opt/third-party/bin/perl
open(FILE, "<", "file") || die "Unable to open file <$!> \n";
while(chomp($var=<FILE>)) {
@arr = split(/,/, $var);
foreach(@arr) {
if( exists $fileHash{$_} ) {
print $var . "\n";
last;
}
else {
$fileHash{$_} = $i++;
}
}
%fileHash = ();
}
close(FILE);
exit 0
|
|
||||
|
Oi,
Acho que estou enganado. Citação:
Desculpa se a minha escritura foi arrogante embora. Obrigado, Srini |
![]() |
| Marcadores |
| Tags |
| linux |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|