The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



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
kontrollera fel i filer ali560045 Shell-programmering och Skript 4 06-19-2008 11:56
hur man kan logga in i ett annat IP och kontrollera filer saikumar_n Shell-programmering och Skript 2 07-11-2007 03:34
hur man kan logga in i ett annat IP och kontrollera filer saikumar_n UNIX för avancerade & Expertanvändare 1 07-11-2007 11:13
söka efter filer på FTP ... jithinravi UNIX for Dummies Frågor & Svar 3 06-22-2007 12:25
Söka lista av poster i filen för verkliga filer i dir not4google UNIX for Dummies Frågor & 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 denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 11-18-2007
za_7565 za_7565 is offline
Registered User
  
 

Join Date: Nov 2007
Ort: ON, Kanada
Inlägg: 16
kontrollera uppgifterna mellan filer

Jag måste skriva ett manus till:
Jag har två filer där jag behöver för att kontrollera uppgifterna och sorts jämföra:
fil1:
data01
data02
data03
data04
data05
.
.
.
data81

fil2:
/ vol/vx/data01
/ vol/vx/data02
/ vol/vx/data03
/ vol/vx/data04
/ vol/vx/data05
.
.
Så varje inresa från fil1 bör ha motsvarande post i fil2. Om posten finns det borde gå, men om det inte finns någon post den borde säga:
Fel: inträde dataXXX har någon post i fil2.

Uppskattar din hjälp.
  #2 (permalänk)  
Old 11-18-2007
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.345
Med awk:


Kod:
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"

Hälsningar
  #3 (permalänk)  
Old 12-19-2007
amitrajvarma amitrajvarma is offline
Registered User
  
 

Join Date: oktober 2007
Inlägg: 43
Citat:
Ursprungligen postat av Franklin52 View Post
Med awk:


Kod:
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"

Hälsningar
Hej,
Jag får följande felmeddelande
"Icke avstämda".
när jag utfört

awk '
BEGIN (FS \u003d"/"}
FNR \u003d\u003d NR (arr [$ 0] \u003d $ 0; nästa)
(arr2 [$ 4] \u003d $ 4)
Slut (
for (i "i arr) (
if (! arr2 [i]) (
print "Fel: posten" arr [i] "inte har någon post i fil2"
)
)
) ' "Fil1" "fil2"

Låt mig veta varför så. Jag har en tcsh shell

Tack

Amit
  #4 (permalänk)  
Old 12-19-2007
summer_cherry summer_cherry is offline Forum Advisor  
Registered User
  
 

Join Date: juni 2007
Plats: Beijing Kina
Inlägg: 1.092
awk

Hej,

Jag försökte detta en och det fungerar.

input:

Kod:
a:
data01
data02
data03
data04
data05

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

produktion:

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


kod:

Kod:
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 (permalänk)  
Old 11-18-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
missbrukare
  
 

Join Date: Jan 2007
Ort: Варна, България / Milano, Italia
Inlägg: 2.926

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


Använd nawk eller / usr/xpg4/bin/awk på Solaris.


PS. Bara såg inlägget ovan
om du vill ha en produktion som liknar det här:


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


Senast redigerad av radoulov; 11-18-2007 vid 12:43..
  #6 (permalänk)  
Old 11-18-2007
prowla prowla is offline
Läs Endast
  
 

Join Date: Nov 2007
Inlägg: 165
Prova detta:


Kod:
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 (permalänk)  
Old 11-18-2007
summer_cherry summer_cherry is offline Forum Advisor  
Registered User
  
 

Join Date: juni 2007
Plats: Beijing Kina
Inlägg: 1.092
awk

input:

Kod:
a:
data01
data02
data03
data04
data05
b:
/vol/vx/data01
/vol/vx/data02
/vol/vx/data05

produktion:

Kod:
No entry for:data03
No entry for:data04

kod:

Kod:
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

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 03:05.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0