The UNIX and Linux Forums  

Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
google unix.com



Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
Para eliminar carácter de nueva línea shihabvk UNIX para usuarios avanzados y expertos 7 06-18-2009 08:44 AM
sed para eliminar el carácter [ ' manishabh Programación de scripts de shell y 2 08-30-2008 12:28 AM
Cómo quitar caracteres extraños vsmurali UNIX for Dummies Preguntas y Respuestas 7 03-18-2008 12:57 PM
Tratando de eliminar el carácter único de una línea Iz3k34l UNIX for Dummies Preguntas y Respuestas 5 07-07-2007 02:29 PM
Última eliminar caracteres de la línea danhodges99 Programación de scripts de shell y 4 05-21-2003 10:30 am

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 10-06-2008
VPREATR VPREATR is offline
Usuario Registrado
  
 

Fecha: octubre 2008
Publicaciones: 3
Necesidad de eliminar primer carácter de cada tercera línea (o revisado nawk).

He aquí los datos que estoy empezando con (por ejemplo, la producción combinada de dos consultas, tamaño de archivo: 284k)

Código:
3000877|555-55-1111|2|7/30/2008|TEST|P.O. BOX 1111|PALM DESERT|CA|92211||5555555555||||||||48|||1||1|3|||2|||||||||||||1|3||2|2
||||2||9||3|1|2|2|2|1|3|0||5|2|||||||||88||3|2||3|2||||2|1|||6|5/31/2008|2||||9|AD|||42|42||||||Y|555-55-1111|SMITH|JOHN|||12
/23/1960|2|WH|||||||||Y
3000178|555-55-1112|2|7/23/2008|TEST|P.O. BOX 1112|TEMECULA|CA|92591||5555555555||||||||33|||1||1|3|||2|||||||||||||3|3||2|
2||||2||9||2|1|2|2|2|2|3|0||5|2|||||||||88|||2||3|2||||2|9|||||2||||9|A|||42|42||||||Y|555-55-1112|SMITH|JACK|||12/8/1975|2|BL|
||||||||Y
3000317|555-55-1113|2|7/29/2008|TEST|P.O. BOX 1113|MORENO VALLEY|CA|92556||5555555555||||||||55|||1||4|1|||2|||||||||||||1|3||2|2||||
2||9||1|0|2|2|2|2|3|0||5|2|||||||||88|||2||3|2||||2|9|||||2||||9|A|||42|42||||||Y|555-55-1113|SMITH|JOE|||11/28/1953|2|AO|||||||
||Y

Entonces ejecute el siguiente script nawk como un \ n es necesaria después de la # 103 y # 120 entradas. (nawk-f scriptname> filename1)

Código:
[
BEGIN {
   FS="|"
       }
 
{
  OFS="|"
}
 
{
print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,
$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,
$41,$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$60,
$61,$62,$63,$64,$65,$66,$67,$68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,
$81,$82,$83,$84,$85,$86,$87,$88,$89,$90,$91,$92,$93,$94,$95,$96,$97,$98,$99,
$100,$101,$102,$103,"\n",
$104,$105,$106,$107,$108,$109,$110,$111,$112,$113,$114,$115,$116,
$117,$118,$119,$120,"\n"
}
END {}

Nawk la secuencia de comandos de salida (es decir, filename1) es:

Código:
3000877|555-55-1111|2|7/30/2008|TEST|P.O. BOX 1111|PALM DESERT|CA|92211||5555555555||||||||48|||1||1|3|||2|||||||||||||1|3||2|2
||||2||9||3|1|2|2|2|1|3|0||5|2|||||||||88||3|2||3|2||||2|1|||6|5/31/2008|2||||9|AD|||42|42||||||Y|
|555-55-1111|SMITH|JOHN|||12/23/1960|2|WH|||||||||Y|

3000178|555-55-1112|2|7/23/2008|TEST|P.O. BOX 1112|TEMECULA|CA|92591||5555555555||||||||33|||1||1|3|||2|||||||||||||3|3||2|
2||||2||9||2|1|2|2|2|2|3|0||5|2|||||||||88|||2||3|2||||2|9|||||2||||9|A|||42|42||||||Y|
|555-55-1112|SMITH|JACK|||12/8/1975|2|BL|||||||||Y|

3000317|555-55-1113|2|7/29/2008|TEST|P.O. BOX 1112|MORENO VALLEY|CA|92556||555555555||||||||55|||1||4|1|||2|||||||||||||1|3||2|2||||
2||9||1|0|2|2|2|2|3|0||5|2|||||||||88|||2||3|2||||2|9|||||2||||9|A|||42|42||||||Y|
|555-55-1113|SMITH|JOE|||11/28/1953|2|AO|||||||||Y|

El problema está en la tercera línea de cada entrada, la secuencia de comandos nawk ha añadido un nuevo primer carácter tubería (es decir, |) y que está causando una gran cantidad de estragos dada mi requisitos de importación. Ahora he intentado varias sed métodos de eliminación sobre la base del primer carácter de cada 3 ª línea en todo el archivo, lamentablemente sin éxito. Por último, he revisado el script en nawk intento de excluir a la cañería de carácter adicional, todas sin éxito.

Código:
|555-55-1113|SMITH|JOE|||11/28/1953|2|AO|||||||||Y|

Tiene que ser:

Código:
555-55-1113|SMITH|JOE|||11/28/1953|2|AO|||||||||Y|

Examen, los pensamientos y sugerencias son una buena noticia.

Gracias!
  #2 (Enlace permanente)  
Old 10-06-2008
vidyadhar85's Avatar
vidyadhar85 vidyadhar85 is offline Forum Staff  
Moderador (el tutor)
  
 

Fecha: junio 2008
Ubicación: INDIA
Mensajes: 1.419
pruebe a utilizar "\ b" después de "\ n"
  #3 (Enlace permanente)  
Old 10-06-2008
VPREATR VPREATR is offline
Usuario Registrado
  
 

Fecha: octubre 2008
Publicaciones: 3
Cita:
Publicado originalmente por vidyadhar85 View Post
pruebe a utilizar "\ b" después de "\ n"
Esta es la salida:

Código:
3000877|555-55-1111|2|7/30/2008|TEST|P.O. BOX 1111|PALM DESERT|CA|92211||555555555||||||||48|||1||1|3|||2|||||||||||||1|3||2|2
||||2||9||3|1|2|2|2|1|3|0||5|2|||||||||88||3|2||3|2||||2|1|||6|5/31/2008|2||||9|AD|||42|42||||||Y|
^H|555-55-1111|SMITH|JOHN|||12/23/1960|2|WH|||||||||Y|
^H

  #4 (Enlace permanente)  
Old 10-06-2008
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programador, autor
  
 

Fecha: marzo 2007
Ubicación: Toronto, Canadá
Puestos: 2.380

Código:
BEGIN { FS = OFS = "|" }
{
 print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,
     $16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,
     $29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,
     $42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,
     $55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,
     $68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,
     $81,$82,$83,$84,$85,$86,$87,$88,$89,$90,$91,$92,$93,
     $94,$95,$96,$97,$98,$99,$100,$101,$102,$103
 print ""
 print $104,$105,$106,$107,$108,$109,$110,$111,$112,$113,
       $114,$115,$116,$117,$118,$119,$120
 print ""
}

  #5 (Enlace permanente)  
Old 10-06-2008
VPREATR VPREATR is offline
Usuario Registrado
  
 

Fecha: octubre 2008
Publicaciones: 3
Cita:
Publicado originalmente por cfajohnson View Post
Código:
BEGIN { FS = OFS = "|" }
{
 print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,
     $16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,
     $29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,
     $42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,
     $55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,
     $68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,
     $81,$82,$83,$84,$85,$86,$87,$88,$89,$90,$91,$92,$93,
     $94,$95,$96,$97,$98,$99,$100,$101,$102,$103
 print ""
 print $104,$105,$106,$107,$108,$109,$110,$111,$112,$113,
       $114,$115,$116,$117,$118,$119,$120
 print ""
}
Este hizo el truco:

Código:
BEGIN { FS = OFS = "|" }
{
 print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,
     $16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,
     $29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,
     $42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,
     $55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,
     $68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,
     $81,$82,$83,$84,$85,$86,$87,$88,$89,$90,$91,$92,$93,
     $94,$95,$96,$97,$98,$99,$100,$101,$102,$103
 print $104,$105,$106,$107,$108,$109,$110,$111,$112,$113,
       $114,$115,$116,$117,$118,$119,$120
 print ""
}

La primera imprimir \u003d "" declaración fue removida ya que se crea un nuevo / innecesario de línea (es decir, de separación).

Gracias!
  #6 (Enlace permanente)  
Old 10-07-2008
vijay_0209 vijay_0209 is offline
Usuario Registrado
  
 

Fecha: abril 2008
Puestos: 52
tratar este .... dime si esto funciona bien .....

awk '(
if (NR% 3! \u003d 0)
(
imprimir
)
algo más
(
for (i \u003d 1; i <\u003d NF; i + +)
(
si (i \u003d\u003d 1)
(
printf ( "% s", substr ($ 1,2, length ($ 1) -1))
)
algo más
(
printf ( "% s", $ i)
)
)
printf "\ n"
)
) 'Archivo

Última edición por vijay_0209; al 10-07-2008 01:09 AM..
  #7 (Enlace permanente)  
Old 10-07-2008
RahulJoshi's Avatar
RahulJoshi RahulJoshi is offline
Usuario Registrado
  
 

Fecha: agosto 2008
Ubicación: PUNE
Puestos: 98
edad o después de ur / p sólo firmar y dar la cañería sed 's /^|// g'
Closed Thread

Marcadores

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 01:37 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0