The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



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.

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

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øk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 11-18-2007
za_7565 za_7565 is offline
Registrert bruker
  
 

Bli Dato: november 2007
Beliggenhet: ON, Canada
Innlegg: 16
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.
  #2 (permalink)  
Old 11-18-2007
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Bli Date: Feb 2007
Innlegg: 4342
Med awk:


Code:
awk '
BEGIN {FS="/"}
FNR==NR {arr[$0]=$0;next}
{arr2[$4]=$4}
END {
  for(i in arr) {
    if (!arr2[i]) {
      print "error: entry " arr[i] " has no entry in file2"
    }
  }
}' "file1" "file2"

Hilsen
  #3 (permalink)  
Old 12-19-2007
amitrajvarma amitrajvarma is offline
Registrert bruker
  
 

Bli Dato: Oct 2007
Innlegg: 43
Sitat:
Originally Posted by Franklin52 View Post
Med awk:


Code:
awk '
BEGIN {FS="/"}
FNR==NR {arr[$0]=$0;next}
{arr2[$4]=$4}
END {
  for(i in arr) {
    if (!arr2[i]) {
      print "error: entry " arr[i] " has no entry in file2"
    }
  }
}' "file1" "file2"

Hilsen
Hei,
Jeg får følgende feilmelding,
"Enestående fordeler med hensyn til".
når jeg henrettet den

awk '
BEGIN (FS \u003d"/"}
FNR \u003d\u003d NR (arr [$ 0] \u003d $ 0; neste)
(arr2 [$ 4] \u003d $ 4)
END (
for (i in arr) (
if (! arr2 [i]) (
print "error: oppføring" arr [i] "har ingen oppføring i file2"
)
)
) "" File1 "" file2 "

Fortell meg gjerne hvorfor det. Jeg har et tcsh shell

Takk

Amit
  #4 (permalink)  
Old 12-19-2007
summer_cherry summer_cherry is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: juni 2007
Sted: Beijing Kina
Innlegg: 1092
awk

Hei,

Jeg prøvde dette og det fungerer.

Inngang:

Code:
a:
data01
data02
data03
data04
data05

b:
/vol/vx/data03
/vol/vx/data01

utgang:

Code:
error: entry data04 has no entry in file2.
error: entry data05 has no entry in file2.
error: entry data02 has no entry in file2.


Kode:

Code:
sed 's/\// /g' b > b.tmp
nawk '
NR==FNR {a[$1]=$1}
NR!=FNR {a[$3]=$0}
END{
for (i in a)
	if (i==a[i])
		print "error: entry "i" has no entry in file2."
}
' a b.tmp
rm b.tmp

  #5 (permalink)  
Old 11-18-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
stoffmisbruker
  
 

Bli Date: Jan 2007
Beliggenhet: Варна, България / Milano, Italia
Innlegg: 2926

Code:
awk 'NR==FNR{x[$NF];next}
{print ($1 in x)?$1:"error: entry "$1" has no entry in file2"
}' FS="/" file2 file1


Bruk nawk eller / usr/xpg4/bin/awk på Solaris.


PS. Bare så det stolpe over,
hvis du vil ha en effekt sånn:


Code:
awk 'NR==FNR{x[$NF];next}
!($1 in x)&&$0="error: entry "$1" has no entry in file2"
' FS="/" file2 file1


Sist endret av radoulov; 11-18-2007 på 12:43..
  #6 (permalink)  
Old 11-18-2007
prowla prowla is offline
Skrivebeskyttet
  
 

Bli Dato: november 2007
Innlegg: 165
Prøv dette:


Code:
cat file1 | while read key
do
  grep "/vol/vx/$key$" file2 2>&1 >/dev/null # Some systems may accept "grep -q".
  [ $? -ne 0 ] && echo "error: entry $key has no entry in file2"
done

  #7 (permalink)  
Old 11-18-2007
summer_cherry summer_cherry is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: juni 2007
Sted: Beijing Kina
Innlegg: 1092
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

Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 07:12.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0