![]() |
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| ta bort två mönster och ta ett mönster | ppat7046 | Shell-programmering och Skript | 7 | 04-08-2009 09:19 |
| Ta bort linjerna mellan två mönster utan att ta bort den andra mönster | Ilja | Shell-programmering och Skript | 1 | 11-14-2008 09:53 |
| Grep Alla linjer mellan 2 olika mönster | gurpreet470 | Shell-programmering och Skript | 2 | 11-07-2008 04:45 |
| Få linjerna mellan sista förekomsten av två mönster | rvz | Shell-programmering och Skript | 8 | 08-08-2008 05:32 |
| Hur får man linjer mellan Mönster? | racbern | Shell-programmering och Skript | 11 | 04-23-2008 07:28 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
ta bort linjerna mellan mönster
Hej, jag har sökt i forumet hela dagen men kunde inte hitta tillräckligt med koder för att hjälpa mig göra en uppgift. De enda nummer som jag kan komma på är:
sed '/ [0-9] [0-9] / / [0-9] [0-9] / (/ / p, d;) "inputfile> utdatafil Jag vill sed/awk / grep en fil för två mönster och sedan ta bort linjerna mellan dessa mönster. Se inputfile nedan. Detta är bara en liten del av ett långdraget ärende. Allt i fetstil bör utgå. I detta fall vill jag söka efter den första mönster [0 0 2] och den sista mönster [2433 2433 2], och sedan ta bort varje linje mellan dessa mönster, men håller linjen [ANT_2] above the line [2433 2433 2] . Likaså vill jag söka efter den första mönster [0 0 4] och den sista mönster [1 1 2], och sedan ta bort varje linje mellan dessa mönster, men håller linjen [ANT_6] above the line [1 1 2]. Antalet linjer mellan dessa pattens kan variera. Det enda som jag ser det är konstant är [0 0]. Någon hjälp eller förslag skulle vara mycket uppskattat. inputfile -------- ANT_1 0 0 2 januari 14 10:11:44 2009 Artikel Arkiv Sökväg: / home / la / _drc_ skikt till gaten område förhållandet> 500 ANT_2 2433 2433 2 januari 14 10:13:46 2009 Artikel Arkiv Sökväg: / home / la / _drc_ mt1 till 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 januari 14 10:13:59 2009 Artikel Arkiv Sökväg: / home / la / _drc_ mt2 skillnad gate insatsvaror. ANT_4 0 0 2 januari 14 10:14:01 2009 Artikel Arkiv Sökväg: / home / la / _drc_ guld skillnad gate insatsvaror. ANT_5 0 0 4 januari 14 10:14:01 2009 Artikel Arkiv Sökväg: / home / la / _drc_ guld skillnad gate insatsvaror. ANT_6 1 1 2 januari 14 10:14:01 2009 Artikel Arkiv Sökväg: / home / la / _drc_ guld skillnad gate insatsvaror. NET_AREA_RATIO_RDBS 0 0 3 januari 14 10:14:01 2009 ANT2.OUT ANT3.OUT ANT4.OUT Önskvärda utdatafil ---------------- ANT_2 2433 2433 2 januari 14 10:13:46 2009 Artikel Arkiv Sökväg: / home / la / _drc_ mt1 till 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 januari 14 10:14:01 2009 Artikel Arkiv Sökväg: / home / la / _drc_ guld skillnad gate insatsvaror. |
|
||||
|
Ghostdog, Im osäker där Mer Unix / Linux Forum är att jag inte kunde hitta det i detta forum listan.
Jag kunde få en kod från detta forum och tillämpa den på vad jag gör. Det är inte exakt men det är nära. kod ----- Kod:
#!/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
Detta är min indatafil: inputfile b --------- Kod:
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 Detta är min utdatafilen: utdatafil e ----------- Kod:
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) Det finns ett problem med denna kod som jag dont förstå är att jag använder mönster [1-9] [1-9], så det bör inte utvinna linje: 55 55 2 4 maj 16:30:30 2009 Men det är vad jag ville. Jag vill också att linje: 20 20 2 4 maj 16:30:03 2009 Men det fick inte utvunnits. Hur ändrar jag mönster / [1-9] [1-9] /, så att den hittar alla strängar, det vill säga, 55 55 2 20 20 2? Jag har provat olika mönster / [1-9] * [1-9] * / eller något längs den linjen, men det fungerar inte. Ledsen för den långa begäran, men några råd skulle vara mycket uppskattat. Det här är min kod: Senast redigerad av vgersh99; 05-28-2009 vid 03:01.. Orsak: lagt till kod taggar |
| Bits Awarded / belasta shamushamu för det här inlägget | |||
| Datum | Användare | Kommentera | Belopp |
| 05-28-2009 | vgersh99 | N / A | 0 |
|
||||
|
Ledsen för det, vgersh99. Jag är ny på Linux och detta forum.
Jag hittade och fixa mitt nummer. Jag ändrade mönstret till: Kod:
awk '/^[1-9]/{ before-=1;after=2; next }
Men jag är fortfarande mycket intresserad av att se om någon har en bättre lösning än detta. Jag tror att detta kan göras med några rader. |
![]() |
| Komihåglista |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|