![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| UNIX for Dummies Frågor & Svar Om du inte är säker på var att skriva en UNIX eller Linux fråga efter det här. Alla UNIX-och Linux-nybörjare välkomna! |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| Hitta namn på flera filer | Rally_Point | UNIX for Dummies Frågor & Svar | 3 | 02-23-2009 08:36 |
| Hitta saknas följdnummer filnamn | Julolidine | Shell-programmering och Skript | 2 | 07-03-2008 12:52 |
| Hitta filer med namn som har ett reellt tal större sedan difined. | harmonwood | Shell-programmering och Skript | 2 | 11-09-2007 10:28 |
| hitta duplicerade filer med storlek och hitta mönstermatchning och räkna | Jerome Sukumar | Shell-programmering och Skript | 2 | 12-01-2006 04:20 |
| hur man hittar versal namn i en fil utan att hitta ord i början av meningen | kev269 | Shell-programmering och Skript | 1 | 04-10-2006 10:35 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Att hitta namn på flera filer - andra försöket
Jag kunde inte hitta den ursprungliga tråden som jag skapade, och eftersom jag inte fick ett definitivt svar, jag tänkte att jag skulle försöka igen. Kanske den här gången kan jag beskriva vad jag vill ha lite bättre.
Jag har två filer, vardera med tusentals namn på alla åtskilda av ny linje. Jag vill veta om namn i fil1 "också visas någonstans i filen 2 och sedan skriva ut den för mig (även om produktionen är inte problemet). Jag har tänkt att kanske det finns ett sätt att gå igenom den första filen och med varje rad, så gå igenom varje rad i den andra filen (något som liknar en nästlad loop uttalande) och sedan gå därifrån. Jag undrar bara om det kommer att fungera på om det finns ett bättre och enklare sätt. Tack |
|
||||
|
Använd associativa arrayer i awk. Detta finner namn som förekommer i båda filerna. Det är skiftlägeskänsligt och känsligt för extra utrymmen - med andra ord en exakt matchning Kod:
awl '{ if(FILENAME=="file1") (arr[$0]++}
if(FILENAME=="file2") {if($0 in arr) {print $0)} }
}' file1 file2
Kapslade loopar som du beskriver tar alldeles för lång tid. Detta är ungefär lika Godd som det blir. |
|
||||
|
Citat:
Något som: Kod:
while read name;do grep "$name" file2;done < file1 Och Du kan göra något liknande: Kod:
while read name;do echo $name:;grep "$name" file2;done < file1 Eller någon annan åtgärd som grundar sig på returvärdet grep? Kod:
while read name;do ;grep -q "$name" file2 && echo $name found in file2;done < file1 Och det skulle hjälpa om du kunde visa källan för filen, om det inte fungerar. Har du funderat på att sortera filer och använda diff? Vänliga hälsningar / Lakris |
![]() |
| Komihåglista |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|