حالا مثال دیگری مینویسیم که در آن دنبال سکّههایی میگردیم که مربوط به سالهای قبل از ۱۹۸۶ هستند (قبل از تولّد من). وقتی این سکّهها را پیدا کردیم جنس آنها، سال ساخت و کشور سازندهشان را چاپ میکنیم.
فایلی به اسم exam2.awk را به شکل زیر میسازیم.
{ if ($3 < 1986) printf("%s t%s t%sn", $1, $3, $4); }
همانطور که میبینید عبارت /~~~/ دیگر وجود ندارد و این به آن معنی است که دستورات داخل آکولاد برای همهی خطها اجرا شوند. دستور if هم خیلی شبیه C است. در آرگومانهای دستور printf کاراکتر t معرّف TAB است.
حالا برنامه را مانند مثال اوّل اجرا میکنیم و نتیجه به این شکل خواهد بود.
gold 1908 Austria-Hungary
silver 1981 USA
gold 1984 Switzerland
gold 1979 RSA
gold 1981 RSA
در آخر یک مثال پیچیدهتر میزنیم. برنامهای مینویسیم که با فرض اینکه هر اونس طلا ۴۸۵ دلار و هر اونس نقره ۱۶ دلار است، ارزش و وزن سکّههای طلا و نقره و ارزش و وزن کل مجموعه را چاپ کند.
فایلی به نام exam3.awk را به این شکل بسازید.
/gold/ { goldsNum++; goldsWt += $2 }
/silver/ { silversNum++; silversWt += $2 }
END {
goldsVal = goldsWt * 485;
silversVal = silversWt * 16;
totalNum = goldsNum + silversNum;
totalVal = goldsVal + silversVal;
printf ("nSummary data for coin collection:nn");
printf (" Gold pieces: %dn", goldsNum);
printf (" Weight of gold pieces: %.2fn", goldsWt);
printf (" Value of gold pieces: %.2fnn", goldsVal);
printf (" Silver pieces: %dn", silversNum);
printf (" Weight of silver pieces: %.2fn", silversWt);
printf (" Value of silver pieces: %.2fnn", silversVal);
printf (" Total number of pieces: %dn", totalNum);
printf (" Value of collection: %.2fnn", totalVal);
متلب پروگرمر printf ,pieces ,مثال ,silver ,gold ,gold ,silver pieces ,gold pieces منبع
درباره این سایت