<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
1000 efxaristw file! etsi opws&nbsp;mou to egrapses einai, akrivws. den eixa idea&nbsp;gia afto to&nbsp;command prin.<BR>
&nbsp;<BR>
Na 'sai kala,&nbsp;kai pali efxaristw!<BR>
&nbsp;<BR>
Kyriacos<BR>
&nbsp;<BR>
<BR><BR>&nbsp;<BR>&gt; From: keramida@ceid.upatras.gr<BR>&gt; To: g9kyris@hotmail.com<BR>&gt; Subject: Re: awk help :)<BR>&gt; Date: Tue, 28 Apr 2009 20:14:51 +0300<BR>&gt; CC: linux-greek-users@lists.hellug.gr<BR>&gt; <BR>&gt; On Tue, 28 Apr 2009 18:02:25 +0200, Kyriacos Achilleos &lt;g9kyris@hotmail.com&gt; wrote:<BR>&gt; &gt; Geia sas paidia. Graftika sto mailing list sas meta apo eisigisi<BR>&gt; &gt; kapiou filou. Exo mia aporia stin awk, an mporeite na me voithisete,<BR>&gt; &gt; dioti exo psaksei kai den vrisko ti lysi.<BR>&gt; &gt;<BR>&gt; &gt; Exo ena file (file1) sto opoio mesa yparxoun 3 columns. To 1o column<BR>&gt; &gt; einai arithmoi (probabilities) kai ta alla 2 columns einai strings (1<BR>&gt; &gt; leksi to kathe ena). Exo ena allo file (file2), to opoio einai san to<BR>&gt; &gt; file1 alla me 1 string column anti 2 (diladi synolo 2 columns).<BR>&gt; &gt;<BR>&gt; &gt; Thelo tora apo to file1 na pernei to string tou 2ou column kathe<BR>&gt; &gt; grammis kai na psaxnei sto file2 gia na vrei tin leksi. Otan tin vrei<BR>&gt; &gt; thelo na perno to 1o column ($1) tis grammis, ton arithmo diladi pou<BR>&gt; &gt; einai prin ti leksi.<BR>&gt; &gt;<BR>&gt; &gt; Sto telos, thelo na kanei output (se kainourio file) ta 3 columns tou<BR>&gt; &gt; file1 alla to column 1 me tous arithmous na kanei diairesi me ton<BR>&gt; &gt; antistoixo arithmo pou vrike apo to file2.<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt; Akougetai sigoura polyploko alla eimai sigouros einai poly efkolo gia<BR>&gt; &gt;&gt; kapoio pou kserei kati parapano apo mena! Apla den ksero pos na kano<BR>&gt; &gt; search se allo file apo ena allo script. Den me noiazei na einai<BR>&gt; &gt; script i shell command synexomeno. Sas deinw ena paradeigma gia na<BR>&gt; &gt; sas einai pio ksekatharo.<BR>&gt; <BR>&gt; Αν είσαι σίγουρος ότι η σειρά των πεδίων στο file2 είναι αυτή που λες,<BR>&gt; όλο το παραπάνω γίνεται με μία εντολή `join' και λίγο awk στο τέλος:<BR>&gt; <BR>&gt; keramida@kobe:/tmp$ cat file1<BR>&gt; 0.01 hello hi<BR>&gt; 0.52 world day<BR>&gt; 0.23 night football<BR>&gt; <BR>&gt; keramida@kobe:/tmp$ cat file2<BR>&gt; 0.04 hello<BR>&gt; 0.02 night<BR>&gt; 0.03 world<BR>&gt; <BR>&gt; keramida@kobe:/tmp$ join -a 1 -e 1.0 -1 2 -2 2 -o 1.1,2.1,1.2,1.3 file1 file2<BR>&gt; 0.01 0.04 hello hi<BR>&gt; 0.52 0.03 world day<BR>&gt; 0.23 1.0 night football<BR>&gt; <BR>&gt; Για να δεις τι κάνει κάθε επιλογή της `join' που έβαλα παραπάνω, διάβασε<BR>&gt; το manpage του utility (`man join'). Μόλις φτάσεις σε αυτό το σημείο<BR>&gt; είναι ψιλο-προφανές πλέον τι χρειάζεται από το awk:<BR>&gt; <BR>&gt; keramida@kobe:/tmp$ join -a 1 -e 1.0 -1 2 -2 2 -o 1.1,2.1,1.2,1.3 file1 file2 | awk '{print $1/$2,$3,$4}'<BR>&gt; 0.25 hello hi<BR>&gt; 17.3333 world day<BR>&gt; 0.23 night football<BR>&gt; <BR>&gt; Αν τα word lists είναι και sorted από πριν, θα έχεις πιο καλά<BR>&gt; αποτελέσματα μάλλον:<BR>&gt; <BR>&gt; keramida@kobe:/tmp$ sort -k 2 &lt; file1 &gt; file1.tmp &amp;&amp; mv file1.tmp file1<BR>&gt; keramida@kobe:/tmp$ sort -k 2 &lt; file2 &gt; file2.tmp &amp;&amp; mv file2.tmp file2<BR>&gt; keramida@kobe:/tmp$ join -a 1 -e 1.0 -1 2 -2 2 -o 1.1,2.1,1.2,1.3 file1 file2 | awk '{print $1/$2,$3,$4}'<BR>&gt; 0.25 hello hi<BR>&gt; 11.5 night football<BR>&gt; 17.3333 world day<BR>&gt; <BR>&gt; <BR>&gt; --<BR>&gt; linux-greek-users mailing list -- http://lists.hellug.gr<BR><br /><hr />Invite your mail contacts to join your friends list with Windows Live Spaces. It's easy! <a href='http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us' target='_new'>Try it!</a></body>
</html>