![]() |
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| 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 |
| slette to mønstre og fjerne et mønster | ppat7046 | Shell Programmering og Scripting | 7 | 04-08-2009 09:19 AM |
| Slet linjer mellem to mønstre uden at slette den anden mønster | Ilja | Shell Programmering og Scripting | 1 | 11-14-2008 09:53 AM |
| Grep Alle linjer mellem 2 forskellige mønstre | gurpreet470 | Shell Programmering og Scripting | 2 | 11-07-2008 04:45 PM |
| Kom godt i linjerne mellem sidste forekomst af to mønstre | rvz | Shell Programmering og Scripting | 8 | 08-08-2008 05:32 PM |
| Hvordan du kan få linjer i mellem mønstre? | racbern | Shell Programmering og Scripting | 11 | 04-23-2008 07:28 AM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
slette linjer mellem mønstre
Hej, jeg har søgt i dette forum hele dagen lang, men ikke var i stand til at finde nok koder til at hjælpe mig med at udføre en opgave. Den eneste kode, at jeg kan komme med er dette:
sed '/ [0-9] [0-9] / / [0-9] [0-9] / (/ / p d;)' inddatafilen> uddatafil Jeg vil gerne sed/awk / grep en fil for to forskellige mønstre og derefter slette de linjer mellem disse mønstre. Se venligst inddatafilen nedenfor. Dette er blot en lille del af en lang fil. Alt med fed bør udgå. I dette tilfælde vil jeg gerne søge efter den første mønster [0 0 2] og den sidste mønster [2433 2433 2], og derefter slette hver linje mellem disse mønstre, men at holde den linje [ANT_2] over linjen [2433 2433 2] . Ligeledes vil jeg gerne søge efter den første mønster [0 0 4] og den sidste mønster [1 1 2], og derefter slette hver linje mellem disse mønstre, men at holde den linje [ANT_6] over linjen [1 1 2]. Antallet af linjer mellem disse pattens kan variere. Det eneste, jeg kan se, at der konstant er [0 0]. Enhver hjælp eller forslag ville være meget værdsat. inddatafilen -------- ANT_1 0 0 2 jan 14 10:11:44 2009 Regel File stinavn: / home / la / _drc_ lag til gate område ratio> 500 ANT_2 2433 2433 2 jan 14 10:13:46 2009 Regel File stinavn: / home / la / _drc_ mt1 til gate område ratio> 40 p 1 44 -2109300 -10645700 -2095600 -10645700 -2095600 -10649700 -2088500 -10649700 -2088500 -10655700 -2071900 -10655700 ANT_3 0 0 2 jan 14 10:13:59 2009 Regel File stinavn: / home / la / _drc_ mt2 diff gate indgange. ANT_4 0 0 2 jan 14 10:14:01 2009 Regel File stinavn: / home / la / _drc_ guld diff gate indgange. ANT_5 0 0 4 jan 14 10:14:01 2009 Regel File stinavn: / home / la / _drc_ guld diff gate indgange. ANT_6 1 1 2 jan 14 10:14:01 2009 Regel File stinavn: / home / la / _drc_ guld diff gate indgange. NET_AREA_RATIO_RDBS 0 0 3 jan 14 10:14:01 2009 ANT2.OUT ANT3.OUT ANT4.OUT Ønskede uddatafil ---------------- ANT_2 2433 2433 2 jan 14 10:13:46 2009 Regel File stinavn: / home / la / _drc_ mt1 til gate område ratio> 40 p 1 44 -2109300 -10645700 -2095600 -10645700 -2095600 -10649700 -2088500 -10649700 -2088500 -10655700 -2071900 -10655700 ANT_6 1 1 2 jan 14 10:14:01 2009 Regel File stinavn: / home / la / _drc_ guld diff gate indgange. |
|
||||
|
Ghostdog, Im ikke sikker på hvor Mere Unix / Linux Forum er fordi jeg ikke kunne finde den i dette forum listen.
Jeg var i stand til at få en kode fra dette forum og anvender det til, hvad jeg gør. Det er ikke præcise, men det er tæt. kode ----- Code:
#!/bin/bash
function drcext
{
# Extract one line above and two lines below a pattern
awk '/[1-9] [1-9] /{ before-=1;after=2; next }
after { after--;next }
{ store[++before]=$0}
END {
for(i=1;i<=before;i++) {
print store[i]
}
}' b > c
diff b c > d
sed -i 's/[0-9]*,[0-9]*[a-z]*[0-9]*/----------------------------------------------------------------/g' d
sed -i 's/< //g' d
# Add a variable content to the beginning of the file
rulepath=`grep Rule d`
sed -i '/Rule/d' d
sed "1i $rulepath" < d > e
}
drcext
Dette er mit input fil: inddatafilen b --------- Code:
die1 1000 WARN_1 0 0 2 May 4 16:20:21 2009 Rule File Pathname: /coms Rule File Pathname: /home/la/_tij4_drc_ TEOS_CH minimum spacing to VIA_1 is 10.0u, must not overlap 23_K 1 1 2 May 4 16:24:00 2009 Rule File Pathname: /home/la/_tij4_drc_ TEOS_CH must be enclosed by Metal_3 10um min p 1 4 CN tmplt c 1 0 0 1 0 0 -1512633 -8706882 -1507100 -8715212 -1507100 -8668836 -1512633 -8677166 Rule File Pathname: /home/la/_tij4_drc_ SU8_chm to Bond Pad min space is 10 um 45_D2 20 20 2 May 4 16:30:03 2009 Rule File Pathname: /home/la/_tij4_drc_ SU8_chm to Bond Pad at the end of a row min space is 100 um e 1 2 CN die1 c 1 0 0 1 0 0 -1366000 -9000000 -1366000 -8991408 -1461658 -9029146 -1457396 -9031988 e 2 2 -1366000 -9000000 -1366000 -8981773 -1457396 -9031988 -1450898 -9034615 e 3 2 -1366000 -8804227 -1366000 -8800000 Rule File Pathname: /home/la/_tij4_drc_ Primer must be enclosed by SU8_prm AT_1 2 2 2 May 4 16:30:20 2009 Rule File Pathname: /home/la/_tij4_drc_ target must be covered by (drawn) dso p 1 36 CN target_bondalign c 1 0 0 1 -1676600 7170000 -24000 0 -23635 -4168 Rule File Pathname: /home/la/_tij4_drc_ SU8_prm must overlap dso over gld_tgt by 3um min AT_5 2 2 2 May 4 16:30:20 2009 Rule File Pathname: /home/la/_tij4_drc_ SU8_prm/chm/nzl not allowed over gld_tgt p 1 36 CN target_bondalign c 1 0 0 1 -1676600 7170000 -24000 0 -23635 -4168 -22553 -8208 -20785 -12000 -18385 -15427 Rule File Pathname: /home/la/_tij4_drc_ contact not allowed in stitch zone su8_14_26A 55 55 2 May 4 16:30:30 2009 Rule File Pathname: /home/la/_tij4_drc_ NOZZLE minimum width is 10um (for 14um thick material) p 1 114 CN resistor_array c 1 0 0 1 0 0 -1052100 -7525307 -1052067 -7525796 -1052066 -7525803 -1051974 -7526268 Dette er min outputfil: uddatafil e ----------- Code:
Rule File Pathname: /home/la/_tij4_drc_ ---------------------------------------------------------------- 23_K 1 1 2 May 4 16:24:00 2009 TEOS_CH must be enclosed by Metal_3 10um min ---------------------------------------------------------------- AT_1 2 2 2 May 4 16:30:20 2009 target must be covered by (drawn) dso ---------------------------------------------------------------- AT_5 2 2 2 May 4 16:30:20 2009 SU8_prm/chm/nzl not allowed over gld_tgt ---------------------------------------------------------------- su8_14_26A 55 55 2 May 4 16:30:30 2009 NOZZLE minimum width is 10um (for 14um thick material) Der er et problem med denne kode, at jeg dont forstå, er, at jeg bruger mønster [1-9] [1-9], så det bør ikke være udvinder linjen: 55 55 2 4 mai 16:30:30 2009 Men det er hvad jeg ville. Jeg vil også gerne linjen: 20 20 2 4 mai 16:30:03 2009 Men det fik ikke ekstraheret. Hvordan ændrer jeg mønster / [1-9] [1-9] /, så det vil finde alle strenge, dvs; 55 55 2 eller 20 20 2? Jeg har prøvet et andet mønster / [1-9] * [1-9] * / eller noget langs denne linje, men det virker ikke. Sorry for den lange anmodning men enhver rådgive ville være meget værdsat. Dette er min kode: Sidst redigeret af vgersh99; 05-28-2009 på 03:01 PM.. Årsag: tilføjet kode tags |
| Bits Awarded / Debiteret til shamushamu til dette indlæg | |||
| Dato | Bruger | Kommentar | Mængde |
| 05-28-2009 | vgersh99 | N / A | 0 |
|
||||
|
Ked af, at vgersh99. Jeg er ny til Linux og dette forum.
Jeg har lige fundet og fastsætte min kode. Jeg har ændret det mønster, der skal: Code:
awk '/^[1-9]/{ before-=1;after=2; next }
Men jeg er stadig meget interesseret i at se, hvis nogen har en bedre løsning end denne. Jeg mener, at dette kan gøres ved hjælp af et par linjer. |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|