|
|
|
|
Google Site
|
|||||||
| Forums | Registrer | Blogg | Man Pages | Forum Rules | Lenker | Album | FAQ | Brukere | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her. |
![]() |
|
|
Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|||
|
sjekking oppføringer mellom filer
Jeg trenger å skrive et skript på:
Jeg har to filer der jeg trenger å se oppføringer og type sammenligne: file1: data01 data02 data03 data04 data05 . . . data81 file2: / vol/vx/data01 / vol/vx/data02 / vol/vx/data03 / vol/vx/data04 / vol/vx/data05 . . Så hver oppføring fra file1 bør ha tilsvarende oppføring i file2. Hvis oppføringen finnes det skal bestå, men hvis det ikke er oppføring bør det si: feil: oppføring dataXXX har ingen oppføring i file2. Takker for hjelpen. |
| Sponsede lenker | ||
|
|
|
|||
|
awk
Inngang: Code:
a: data01 data02 data03 data04 data05 b: /vol/vx/data01 /vol/vx/data02 /vol/vx/data05 utgang: Code:
No entry for:data03 No entry for:data04 Kode: Code:
nawk 'BEGIN{FS="/"}
{
if (NR==FNR)
test[NR]=$4
else
{
flag=0
for (i in test)
{
if ($1==test[i])
flag=1
}
if (flag==0)
print "No entry for:"$1
}
}' b a |
|
||||
|
Hei. Det er nyttig å se ulike tilnærminger. Jeg liker awk løsninger. Skallet loop Løsningen er også god, men vil kalle grep for hver linje, muligens en ulempe for lange filer. Her er en løsning å bruke * nix-kommandoer, men en moderne shell er nødvendig for at prosessen substitusjon, "<(...)". Dette kan være nyttig hvis det ikke er hensiktsmessig eller mulig å bruke awk, perl, Etc.: Code:
#!/usr/bin/env bash # @(#) s1 Demonstrate feature. set -o nounset echo debug=":" debug="echo" ## Use local command version for the commands in this demonstration. echo "(Versions displayed with local utility \"version\")" version >/dev/null 2>&1 && version bash sort cut comm sed echo echo " Input file data1:" cat data1 echo echo " Input file data2:" cat data2 echo echo " Results:" comm -23 <( sort data1 ) <( cut -d/ -f4 data2 | sort ) | sed -e 's/^/ No entry for: /' exit 0 Produserer, bruker summer_cherry's datasett: Code:
% ./s1 (Versions displayed with local utility "version") GNU bash 2.05b.0 sort (coreutils) 5.2.1 cut (coreutils) 5.2.1 comm (coreutils) 5.2.1 GNU sed version 4.1.2 Input file data1: data01 data02 data03 data04 data05 Input file data2: /vol/vx/data01 /vol/vx/data02 /vol/vx/data05 Results: No entry for: data03 No entry for: data04 Se man-sidene for mer informasjon ... Skål, drl |
|
|||
|
Excellent hjelpe karer ... det virker! Takk til alle som leverte hjelp.
|
| Sponsede lenker |
|
|
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| sjekke feil i filer | ali560045 | Shell programmering og Skripting | 4 | 06-19-2008 11:56 |
| Hvordan logge inn i en annen ip og kontroll for filene | saikumar_n | Shell programmering og Skripting | 2 | 07-11-2007 03:34 |
| Hvordan logge inn i en annen ip og kontroll for filene | saikumar_n | UNIX for Advanced & ekspertbrukere | 1 | 07-11-2007 11:13 |
| se etter filer på ftp ... | jithinravi | UNIX for Dummies Spørsmål og svar | 3 | 06-22-2007 12:25 |
| Søker liste over oppføringer i filen for faktiske filer i dir | not4google | UNIX for Dummies Spørsmål og svar | 2 | 10-18-2006 12:24 |