![]() |
|
|
google unix.com
|
|||||||
| Foros | Registro | Reglas de los Foros | Enlaces | Álbumes | Preguntas más frecuentes | Lista de miembros | Calendario | Búsqueda | Puestos de hoy | Marcar Foros Como Leídos |
| UNIX for Dummies Preguntas y Respuestas Si no está seguro de que para publicar un UNIX o Linux cuestión, puesto que aquí. Todos los novatos en Linux, UNIX y bienvenida! |
Más UNIX y Linux Foro Temas usted puede encontrar útiles
|
||||
| Hilo | Hilo para principiantes | Foro | Respuestas | Último mensaje |
| no contar de las palabras en una línea | satish @ 123 | Programación de scripts de shell y | 7 | 05-21-2008 03:59 AM |
| Necesidad de identificar la línea que contiene @ entre en la línea de un archivo | b.paramanatti | UNIX for Dummies Preguntas y Respuestas | 4 | 11-04-2007 10:50 PM |
| separar las palabras de una línea? | skyineyes | Programación de scripts de shell y | 3 | 06-26-2007 10:00 AM |
| la eliminación de la línea y línea duplicado | ocelote | UNIX for Dummies Preguntas y Respuestas | 11 | 01-30-2007 12:44 PM |
| Duplicar palabras | zulander | UNIX for Dummies Preguntas y Respuestas | 1 | 04-01-2001 04:11 AM |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
Hola, Permítanme explicar claramente el problema: Deje que las entradas en mi archivo: 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 las líneas en las que una de las palabras (separadas por el separador de campo) se produce más de una vez, mediante un comando (o comando de cañería)? En este caso, el comando debería detectar las líneas 2,3,5. I realizada mediante una perl script (citado más abajo), aunque me pregunto si esto podría hacerse a través de un comando (la dificultad es que el no. de columnas no es constante). Perl programa que he utilizado: 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";
Gracias, Srini |
|
||||
|
Si usted tiene Python, aquí tienes una alternativa limpia: 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)
salida: 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 ($ me \u003d\u003d $ J) (print $ I ":" $ 0) ) ) ) '<<ENDOFFILE león, tigre, oso manzana, mango, naranja, manzana, uva Unix, Windows, Solaris, Windows, Linux rojo, azul, verde, amarillo naranja, marrón, rosa, violeta, naranja, rosa ENDOFFILE manzana: manzana, mango, naranja, manzana, uva ventanas: Unix, Windows, Solaris, Windows, Linux naranja: naranja, marrón, rosa, violeta, naranja, rosa rosa: naranja, marrón, rosa, violeta, naranja, rosa |
|
||||
|
Hola,
Gracias por las sugerencias. Entiendo que el trabajo puede hacerse por diferentes variantes de secuencias de comandos, pero lo que estoy ansioso es de "un solo comando / tubería comando" que pueden hacer el trabajo. Si sólo hay número determinado de entradas en cada línea, puedo comparar manualmente en la línea de comandos usando awk /perl. Sin embargo, desde que no conoce el no. de las entradas en cada línea, la tarea es complicada. Me gustaría si me ilustrado un tubo versión de estos scripts. Gracias Srini |
|
||||
|
De nuevo con perl, pero mucho más sencillo ![]() 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
|
|
||||
|
Hola,
Creo que estoy equivocado. Cita:
Lo siento si mi escritura, aunque fue arrogante. Gracias, Srini |
![]() |
| Marcadores |
| Etiquetas |
| linux |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|