The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
string sletning, variabelt indhold, faste afgrænsere rebelbuttmunch Shell Programmering og Scripting 2 03-24-2009 07:44 AM
C-program til at udtrække teksten mellem to delimiters fra nogle tekstfil kukretiabhi13 Højtstående Programmering 7 12-03-2008 06:29 PM
Hvordan at hente data fra en tekstfil i Unix shikhakaul Shell Programmering og Scripting 4 01-25-2008 11:20 AM
konvertere XML-fil i Tekstfil (fast længde) ram2s2001 Shell Programmering og Scripting 0 11-03-2005 01:28 AM
Indsættelse af nye linje efter match af en fast string sunil_neha Shell Programmering og Scripting 6 04-13-2004 11:09 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 Thread Tools Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 05-27-2009
nareshk nareshk is offline
Registreret Bruger
  
 

Join Date: May 2009
Stillinger: 3
Hente rækker med match streng på en fast Lenth tekstfil - NO afgrænsere

Hej

Jeg forsøger at hente de rækker med match streng "0000001234"

Input-filen ser ud som nedenfor:

09 0 XXX 0000001234 Z 1
09 0 XXX 0000001234 Z 1
09 0 XXX 0000001234 Z 1
09 0 XXX 0000001234 Z 1
09 0 XXX 0000001234 Z 1
09 0 XXX 0000001234 Z 1

her scenariet er som vi er nødt til at hente rækker med match streng "0000001234" og udskrive linjer i en separat fil ...

Jeg forsøgte med grep kommando ved grep ^ 09 fil> output fil fungerer det fint, når strengen er starter først.

Please kan nogen hjælpe mig, hvordan vi kan gøre dette ...
  #2 (permalink)  
Old 05-27-2009
Rhije Rhije is offline
Registreret Bruger
  
 

Join Date: Dec 2008
Stillinger: 103
grep bliver arbejdet på en linje for linje, så grep ^ 09 gør lige hvad du har bedt den om at gøre ved at finde en linje, der begynder med 09

Du sandsynligvis vil bruge awk, ville det være den letteste ting at gøre. Hvis dataene er i samme format som du har givet, kan du gøre noget som følgende:

Code:
awk '$4 == "0000001234"' file
Som standard (hvis du ikke fortæller awk at skrive noget specifikt), vil det udskrive hele optage / række. Så ovenstående kun vil udskrive en ballade, hvis det fjerde felt er, hvad der vises.

Du kan også bruge ordet grænser i grep:

Code:
-bash-3.2$ cat test.txt
09 0 XXX 0000001234 Z 1
09 0 XXX 0000001234 Z 1
09 0 XXX 50000001234 Z 1
09 0 XXX 40000001234 Z 1
09 0 XXX 30000001234 Z 1
09 0 XXX 10000001234 Z 1

-bash-3.2$ grep "\<0000001234\>" test.txt
09 0 XXX 0000001234 Z 1
09 0 XXX 0000001234 Z 1
Hope that helps.
  #3 (permalink)  
Old 05-27-2009
nareshk nareshk is offline
Registreret Bruger
  
 

Join Date: May 2009
Stillinger: 3
Citat:
Oprindeligt Indsendt af Rhije View Post
grep bliver arbejdet på en linje for linje, så grep ^ 09 gør lige hvad du har bedt den om at gøre ved at finde en linje, der begynder med 09

Du sandsynligvis vil bruge awk, ville det være den letteste ting at gøre. Hvis dataene er i samme format som du har givet, kan du gøre noget som følgende:

Code:
awk '$4 == "0000001234"' file
Som standard (hvis du ikke fortæller awk at skrive noget specifikt), vil det udskrive hele optage / række. Så ovenstående kun vil udskrive en ballade, hvis det fjerde felt er, hvad der vises.

Du kan også bruge ordet grænser i grep:

Code:
-bash-3.2$ cat test.txt
09 0 XXX 0000001234 Z 1
09 0 XXX 0000001234 Z 1
09 0 XXX 50000001234 Z 1
09 0 XXX 40000001234 Z 1
09 0 XXX 30000001234 Z 1
09 0 XXX 10000001234 Z 1

-bash-3.2$ grep "\<0000001234\>" test.txt
09 0 XXX 0000001234 Z 1
09 0 XXX 0000001234 Z 1
Hope that helps.

Tak for din hjælp

hvad hvis inddatafilen er sådan

09 0 01000000001234 Z 1
09 0 01000000001234 Z 1
09 0 010050000001234 Z 1
09 0 010040000001234 Z 1
09 0 010030000001234 Z 1
09 0 010010000001234 Z 1

og nu vil jeg hente rækker med match streng "0000001234", dvs søge strengen fra den 10. kolonne til 19. kolonne og hente rækker
  #4 (permalink)  
Old 05-27-2009
durden_tyler's Avatar
durden_tyler durden_tyler is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Apr 2009
Posts: 525
Citat:
Oprindeligt Indsendt af nareshk View Post
... hvad hvis inddatafilen er sådan

09 0 01000000001234 Z 1
09 0 01000000001234 Z 1
09 0 010050000001234 Z 1
09 0 010040000001234 Z 1
09 0 010030000001234 Z 1
09 0 010010000001234 Z 1

og nu vil jeg hente rækker med match streng "0000001234", dvs søge strengen fra den 10. kolonne til 19. kolonne og hente rækker
Noget som dette:

Code:
$
$ awk 'substr($0,10,10) == "0000001234"' input.txt
09 0 01000000001234 Z 1
09 0 01000000001234 Z 1
$

tyler_durden

Senest redigeret af durden_tyler; 05-27-2009 kl 05:34 PM..
  #5 (permalink)  
Old 05-27-2009
nareshk nareshk is offline
Registreret Bruger
  
 

Join Date: May 2009
Stillinger: 3
Citat:
Oprindeligt Indsendt af durden_tyler View Post
Noget som dette:

Code:
$
$ awk 'substr($0,10,10) == "0000001234"' input.txt
09 0 01000000001234 Z 1
09 0 01000000001234 Z 1
$
tyler_durden
Thanks guys!

Dette hjalp mig meget!
  #6 (permalink)  
Old 05-27-2009
devtakh devtakh is offline
Registreret Bruger
  
 

Join Date: oktober 2007
Beliggenhed: Bangalore
Posts: 514
Code:
grep "\<0000001234\>" file > newfile

-Devaraj Takhellambam
  #7 (permalink)  
Old 05-27-2009
Rhije Rhije is offline
Registreret Bruger
  
 

Join Date: Dec 2008
Stillinger: 103
Nå, kan du også bare gøre:

Code:
awk '$3 ~ /0000001234/' file
Closed Thread

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 08:33 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0