⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 awkcode.txt

📁 c programming pearls answer
💻 TXT
📖 第 1 页 / 共 5 页
字号:
# unbundle - unpack a bundle into separate files$1 != prev { close(prev); prev = $1 }           { print substr($0, index($0, " ") + 1) >$1 }emp.data Beth	4.00	0emp.data Dan	3.75	0emp.data Kathy	4.00	10emp.data Mark	5.00	20emp.data Mary	5.50	22emp.data Susie	4.25	1805.awk { print $1, $3 }28.awk { print NF, $1, $NF }06.awk { print $1, $2 * $3 }07.awk { print NR, $0 }10.awk { print "total pay for", $1, "is", $2 * $3 }11.awk { printf("total pay for %s is $%.2f\n", $1, $2 * $3) }11a.awk { printf("%-8s $%6.2f\n", $1, $2 * $3) }08.sh awk '{ printf("%6.2f  %s\n", $2 * $3, $0) }' emp.data | sort12.awk $2 >= 513.awk $2 * $3 > 50 { printf("$%.2f for %s\n", $2 * $3, $1) }14.awk $1 == "Susie"15.awk /Susie/20.awk $2 >= 4 || $3 >= 2021.awk $2 >= 421.awk $3 >= 2022.awk !($2 < 4 && $3 < 20)26.awk NF != 3   { print $0, "number of fields is not equal to 3" }26.awk $2 < 3.35 { print $0, "rate is below minimum wage" }26.awk $2 > 10   { print $0, "rate exceeds $10 per hour" }26.awk $3 < 0    { print $0, "negative hours worked" }26.awk $3 > 60   { print $0, "too many hours worked" }30.awk BEGIN { print "NAME    RATE   HOURS";  print "" }30.awk       { print }31.awk $3 > 15 { emp = emp + 1 }31.awk END     { print emp, "employees worked more than 15 hours" }31a.awk END { print NR, "employees" }32.awk     { pay = pay + $2 * $3 }32.awk END { print NR, "employees"32.awk       print "total pay is", pay32.awk       print "average pay is", pay/NR32.awk     }33.awk $2 > maxrate { maxrate = $2; maxemp = $1 }33.awk END { print "highest hourly rate:", maxrate, "for", maxemp }34.awk     { names = names $1 " " }34.awk END { print names }33a.awk     { last = $0 }33a.awk END { print last }40.awk { print $1, length($1) }40a.awk     { nc = nc + length($0) + 140a.awk       nw = nw + NF40a.awk     }40a.awk END { print NR, "lines,", nw, "words,", nc, "characters" }41.awk $2 > 6 { n = n + 1; pay = pay + $2 * $3 }41.awk END    { if (n > 0)41.awk              print n, "employees, total pay is", pay,41.awk                       "average pay is", pay/n41.awk          else41.awk              print "no employees are paid more than $6/hour"41.awk        }interest1.awk # interest1 - compute compound interestinterest1.awk #   input:  amount  rate  yearsinterest1.awk #   output: compounded value at the end of each yearinterest1.awk interest1.awk {   i = 1interest1.awk     while (i <= $3) {interest1.awk         printf("\t%.2f\n", $1 * (1 + $2) ^ i)interest1.awk         i = i + 1interest1.awk     }interest1.awk }forint.awk # interest2 - compute compound interestforint.awk #   input:  amount  rate  yearsforint.awk #   output: compounded value at the end of each yearforint.awk forint.awk {   for (i = 1; i <= $3; i = i + 1)forint.awk         printf("\t%.2f\n", $1 * (1 + $2) ^ i)forint.awk }50.awk # reverse - print input in reverse order by line50.awk 50.awk     { line[NR] = $0 }  # remember each input line50.awk 50.awk END { i = NR           # print lines in reverse order50.awk       while (i > 0) {50.awk           print line[i]50.awk           i = i - 150.awk       }50.awk     }51.awk # reverse - print input in reverse order by line51.awk 51.awk     { line[NR] = $0 }  # remember each input line51.awk 51.awk END { for (i = NR; i > 0; i = i - 1)51.awk           print line[i]51.awk     }61.awk END { print NR }62.awk NR == 1066.awk { print $NF }63.awk     { field = $NF}63.awk END { print field }64.awk NF > 465.awk $NF > 467.awk     { nf = nf + NF }67.awk END { print nf }68.awk /Beth/ { nlines = nlines + 1 }68.awk END    { print nlines }69.awk $1 > max { max = $1; maxline = $0 }69.awk END      { print max, maxline }70.awk NF > 071.awk length($0) > 8072.awk { print NF, $0 }73.awk { print $2, $1 }74.awk { temp = $1; $1 = $2; $2 = temp; print }75.awk { $1 = NR; print }76.awk { $2 = ""; print }77.awk { for (i = NF; i > 0; i = i - 1) printf("%s ", $i)77.awk   printf("\n")77.awk }78.awk { sum = 078.awk   for (i = 1; i <= NF; i = i + 1) sum = sum + $i78.awk   print sum78.awk }79.awk     { for (i = 1; i <= NF; i = i + 1) sum = sum + $i }79.awk END { print sum }80.awk { for (i = 1; i <= NF; i = i + 1) if ($i < 0) $i = -$i80.awk   print80.awk }countries USSR	8649	275	Asiacountries Canada	3852	25	North Americacountries China	3705	1032	Asiacountries USA	3615	237	North Americacountries Brazil	3286	134	South Americacountries India	1267	746	Asiacountries Mexico	762	78	North Americacountries France	211	55	Europecountries Japan	144	120	Asiacountries Germany	96	61	Europecountries England	94	56	Europep11.awk # print countries with column headers and totalsp11.awk p11.awk BEGIN { FS = "\t"   # make tab the field separatorp11.awk         printf("%10s %6s %5s   %s\n\n",p11.awk               "COUNTRY", "AREA", "POP", "CONTINENT")p11.awk       }p11.awk       { printf("%10s %6d %5d   %s\n", $1, $2, $3, $4)p11.awk         area = area + $2p11.awk         pop = pop + $3p11.awk       }p11.awk END   { printf("\n%10s %6d %5d\n", "TOTAL", area, pop) }p12.awk $0 >= "M"p13.awk $1 < $4p13a.awk /Asia/re1.awk /^[0-9]+$/re2.awk /^[0-9][0-9][0-9]$/re3.awk /^(\+|-)?[0-9]+\.?[0-9]*$/re4.awk /^[+-]?[0-9]+[.]?[0-9]*$/re5.awk /^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)([eE][+-]?[0-9]+)?$/re6.awk /^[A-Za-z][A-Za-z0-9]*$/re7.awk /^[A-Za-z]$|^[A-Za-z][0-9]$/re8.awk /^[A-Za-z][0-9]?$/p16.awk $2 !~ /^[0-9]+$/p18.awk $4 == "Asia" && $3 > 500p19.awk $4 == "Asia" || $4 == "Europe"p20.awk $4 ~ /^(Asia|Europe)$/p20a.awk /Asia/ || /Europe/p20b.awk /Asia|Europe/p21.awk /Europe/, /Africa/p22.awk FNR == 1, FNR == 5 { print FILENAME ": " $0 }p22a.awk FNR <= 5 { print FILENAME ": " $0 }p23.awk $4 == "Asia" { print $1, 1000 * $2 }p41.awk { $2 = $2 / 1000; print }p42.awk BEGIN			{ FS = OFS = "\t" }p42.awk $4 == "North America"	{ $4 = "NA" }p42.awk $4 == "South America"	{ $4 = "SA" }p42.awk 			{ print }p43.awk BEGIN	{ FS = OFS = "\t" }p43.awk 	{ $5 = 1000 * $3 / $2; print }p43a.awk { print ($1 != 0 ? 1/$1 : "$1 is zero, line " NR) }p32.awk $4 == "Asia" { pop = pop + $3; n = n + 1 }p32.awk END          { print "Total population of the", n,p32.awk                    "Asian countries is", pop, "million."p32.awk              }p34.awk $3 > maxpop  { maxpop = $3; country = $1 }p34.awk END          { print "country with largest population:",p34.awk                    country, maxpopp34.awk              }p24.awk { $2 /= 1000; print }p35.awk { print NR ":" $0 }p17.awk BEGIN	{ digits = "^[0-9]+$" }p17.awk $2 ~ digitsbuiltup.awk BEGIN {builtup.awk     sign = "[+-]?"builtup.awk     decimal = "[0-9]+[.]?[0-9]*"builtup.awk     fraction = "[.][0-9]+"builtup.awk     exponent = "([eE]" sign "[0-9]+)?"builtup.awk     number = "^" sign "(" decimal "|" fraction ")" exponent "$"builtup.awk }builtup.awk $0 ~ numberp36.awk { gsub(/USA/, "United States"); print }p39.awk { $1 = substr($1, 1, 3); print $0 }p40.awk     { s = s substr($1, 1, 3) " " }p40.awk END { print s }p40a.awk BEGIN { print "1E2"+0, "12E"+0, "E12"+0, "1X2Y3"+0 }p40b.awk BEGIN { print 1E2 "", 12E-2 "", E12 "", 1.23456789 "" }p45.awk {    i = 1p45.awk      while (i <= NF) {p45.awk          print $ip45.awk          i++p45.awk      }p45.awk }p46.awk { for (i = 1; i <= NF; i++)p46.awk       print $ip46.awk }empty.awk BEGIN { FS = "\t" }empty.awk       { for (i = 1; i <= NF && $i != ""; i++)empty.awk             ;empty.awk         if (i <= NF)empty.awk             printempty.awk       }revline.awk     { x[NR] = $0 }revline.awk END { for (i = NR; i > 0; i--) print x[i] }p47.awk /Asia/   { pop["Asia"] += $3 }p47.awk /Europe/ { pop["Europe"] += $3 }p47.awk END      { print "Asian population is",p47.awk                pop["Asia"], "million."p47.awk            print "European population is",p47.awk                pop["Europe"], "million."p47.awk          }p48.awk BEGIN { FS = "\t" }p48.awk       { pop[$4] += $3 }p48.awk END   { for (name in pop)p48.awk             print name, pop[name]p48.awk       }p51.awk function max(m, n) {p51.awk     return m > n ? m : np51.awk }p51a.awk { print max($1,max($2,$3)) }  # print maximum of $1, $2, $3p51a.awk p51a.awk function max(m, n) {p51a.awk     return m > n ? m : np51a.awk }p52.awk BEGIN	{ OFS = ":"; ORS = "\n\n" }p52.awk 	{ print $1, $2 }p53.awk $3 > 100   { print $1, $3 >"bigpop" }p53.awk $3 <= 100  { print $1, $3 >"smallpop" }p53a.awk { print($1, $3) > ($3 > 100 ? "bigpop" : "smallpop") }p53b.awk { print > $1 }p54.awk # print continents and populations, sorted by populationp54.awk p54.awk BEGIN { FS = "\t" }p54.awk       { pop[$4] += $3 }p54.awk END   { for (c in pop)p54.awk           printf("%15s\t%6d\n", c, pop[c]) | "sort -t'\t' +1rn"p54.awk       }p60.awk # include - replace #include "f" by contents of file fp60.awk p60.awk /^#include/ {p60.awk     gsub(/"/, "", $2)p60.awk     while (getline x <$2 > 0)p60.awk         print xp60.awk     nextp60.awk }p60.awk { print }p61.awk # echo - print command-line argumentsp61.awk p61.awk BEGIN {p61.awk     for (i = 1; i < ARGC; i++)p61.awk         printf "%s ", ARGV[i]p61.awk     printf "\n"p61.awk }p44.awk # seq - print sequences of integersp44.awk #   input:  arguments q, p q, or p q r;  q >= p; r > 0p44.awk #   output: integers 1 to q, p to q, or p to q in steps of rp44.awk p44.awk BEGIN {p44.awk     if (ARGC == 2)p44.awk         for (i = 1; i <= ARGV[1]; i++)p44.awk             print ip44.awk     else if (ARGC == 3)p44.awk         for (i = ARGV[1]; i <= ARGV[2]; i++)p44.awk             print ip44.awk     else if (ARGC == 4)p44.awk         for (i = ARGV[1]; i <= ARGV[2]; i += ARGV[3])p44.awk             print ip44.awk }p62.awk $1 == "#include" { gsub(/"/, "", $2); system("cat " $2); next }p62.awk                  { print }field.awk # field - print named fields of each input linefield.awk #   usage:  field n n n ... file file file ...field.awk field.awk awk 'field.awk BEGIN {field.awk     for (i = 1; ARGV[i] ~ /^[0-9]+$/; i++) { # collect numbersfield.awk         fld[++nf] = ARGV[i]field.awk         ARGV[i] = ""field.awk     }field.awk     if (i >= ARGC)   # no file names so force stdinfield.awk         ARGV[ARGC++] = "-"field.awk }field.awk {   for (i = 1; i <= nf; i++)field.awk         printf("%s%s", $fld[i], i < nf ? " " : "\n")field.awk }field.awk ' $*sum1 # sum1 - print column sumssum1 #   input:  rows of numberssum1 #   output: sum of each columnsum1 #     missing entries are treated as zerossum1 sum1     { for (i = 1; i <= NF; i++)sum1           sum[i] += $isum1       if (NF > maxfld)sum1           maxfld = NFsum1     }sum1 END { for (i = 1; i <= maxfld; i++) {sum1           printf("%g", sum[i])sum1           if (i < maxfld)sum1               printf("\t")sum1           elsesum1               printf("\n")sum1       }sum1     }sum2 # sum2 - print column sumssum2 #     check that each line has the same number of fieldssum2 #        as line onesum2 sum2 NR==1 { nfld = NF }sum2       { for (i = 1; i <= NF; i++)sum2             sum[i] += $isum2         if (NF != nfld)sum2             print "line " NR " has " NF " entries, not " nfldsum2       }sum2 END   { for (i = 1; i <= nfld; i++)sum2             printf("%g%s", sum[i], i < nfld ? "\t" : "\n")sum2       }sum3 # sum3 - print sums of numeric columnssum3 #     input:  rows of integers and stringssum3 #     output: sums of numeric columnssum3 #       assumes every line has same layoutsum3 sum3 NR==1 { nfld = NFsum3         for (i = 1; i <= NF; i++)sum3             numcol[i] = isnum($i)sum3       }sum3 sum3       { for (i = 1; i <= NF; i++)sum3             if (numcol[i])sum3                 sum[i] += $isum3       }sum3 sum3 END   { for (i = 1; i <= nfld; i++) {sum3             if (numcol[i])sum3                 printf("%g", sum[i])sum3             elsesum3                 printf("--")sum3             printf(i < nfld ? "\t" : "\n")sum3         }sum3       }sum3 sum3 function isnum(n) { return n ~ /^[+-]?[0-9]+$/ }3-4.ans     { total[$1] += $2 }3-4.ans END { for (x in total) print x, total[x] | "sort" }percent # percentpercent #   input:  a column of nonnegative numberspercent #   output: each number and its percentage of the totalpercent percent     { x[NR] = $1; sum += $1 }percent percent END { if (sum != 0)percent           for (i = 1; i <= NR; i++)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -