Skip to content

Commit ec43bb3

Browse files
files for version 0.7
1 parent 3572465 commit ec43bb3

46 files changed

Lines changed: 1193 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

code_snippets/Builtin_functions.sh

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
awk 'BEGIN{print length("road"); print length(123456)}'
2+
3+
printf 'fox\ntiger\n' | awk '{print length()}'
4+
5+
awk 'length($1) < 6' table.txt
6+
7+
echo 'αλεπού' | awk '{print length()}'
8+
9+
echo 'αλεπού' | awk -b '{print length()}'
10+
11+
awk 'BEGIN{a["z"]=1; a["x"]=12; a["b"]=42; for(i in a) print i, a[i]}'
12+
13+
awk 'BEGIN{PROCINFO["sorted_in"] = "@ind_str_asc";
14+
a["z"]=1; a["x"]=12; a["b"]=42; for(i in a) print i, a[i]}'
15+
16+
awk 'BEGIN{PROCINFO["sorted_in"] = "@val_num_asc";
17+
a["z"]=1; a["x"]=12; a["b"]=42; for(i in a) print i, a[i]}'
18+
19+
printf ' one \t two\t\t\tthree ' | awk '{split($0, a); print a[2]}'
20+
21+
s='Joe,1996-10-25,64,78'
22+
23+
echo "$s" | awk -F, '{split($2, d, "-"); print $1 " was born in " d[1]}'
24+
25+
s='air,water,12:42:3'
26+
27+
echo "$s" | awk -F, '{n=split($NF, a, ":");
28+
for(i=1; i<=n; i++) print $1,$2,a[i]}'
29+
30+
s='Sample123string42with777numbers'
31+
32+
echo "$s" | awk '{split($0, s, /[0-9]+/); print s[2], s[4]}'
33+
34+
s='Sample123string42with777numbers'
35+
36+
echo "$s" | awk '{n=split($0, s, /[0-9]+/, seps);
37+
for(i=1; i<n; i++) print seps[i]}'
38+
39+
cat marks.txt
40+
41+
awk 'BEGIN{OFS="\t"; split("DCBAS", g, //)}
42+
{$(NF+1) = NR==1 ? "Grade" : g[int($NF/10)-4]} 1' marks.txt
43+
44+
s='eagle,"fox,42",bee,frog'
45+
46+
echo "$s" | awk '{patsplit($0, a, /"[^"]*"|[^,]*/); print a[2]}'
47+
48+
echo 'abcdefghij' | awk '{print substr($0, 1, 5)}'
49+
50+
echo 'abcdefghij' | awk '{print substr($0, 4, 3)}'
51+
52+
echo 'abcdefghij' | awk '{print substr($0, 6)}'
53+
54+
echo 'abcdefghij' | awk -v OFS=: '{print substr($0, 2, 3), substr($0, 6, 3)}'
55+
56+
echo 'abcdefghij' | awk -v FS= '{print $3}'
57+
58+
echo 'abcdefghij' | awk -v FS= '{print $3, $5}'
59+
60+
s='051 035 154 12 26 98234'
61+
62+
echo "$s" | awk 'match($0, /[0-9]{4,}/){print substr($0, RSTART, RLENGTH)}'
63+
64+
echo "$s" | awk 'match($0, /0*[1-9][0-9]{2,}/, m){print m[0]}'
65+
66+
echo 'foo=42, baz=314' | awk 'match($0, /baz=([0-9]+)/, m){print m[0]}'
67+
68+
echo 'foo=42, baz=314' | awk 'match($0, /baz=([0-9]+)/, m){print m[1]}'
69+
70+
s='42 foo-5, baz3; x-83, y-20: f12'
71+
72+
echo "$s" | awk '{ while( match($0, /([0-9]+),/, m) ){print m[1];
73+
$0=substr($0, RSTART+RLENGTH)} }'
74+
75+
cat eqns.txt
76+
77+
awk '/i*(t+9-g)/' eqns.txt
78+
79+
awk 'index($0, "i*(t+9-g)")' eqns.txt
80+
81+
awk -F, 'index($NF, "a+b")' eqns.txt
82+
83+
awk -F, '$1=="a+b"' eqns.txt
84+
85+
awk 'index($0, "a+b")==1' eqns.txt
86+
87+
awk -v s="a+b" 'index($0, s)==length()-length(s)+1' eqns.txt
88+
89+
echo 'a\b\c\d' | awk -v s='a\b' 'index($0, s)'
90+
91+
echo 'a\b\c\d' | awk -v s='a\\b' 'index($0, s)'
92+
93+
echo 'a\b\c\d' | s='a\b' awk 'index($0, ENVIRON["s"])'
94+
95+
awk 'BEGIN{system("echo Hello World")}'
96+
97+
wc table.txt
98+
99+
awk 'BEGIN{system("wc table.txt")}'
100+
101+
awk 'BEGIN{system("seq 10 | paste -sd, > out.txt")}'
102+
103+
cat out.txt
104+
105+
cat f2.txt
106+
107+
echo 'f1,f2,f3' | awk -F, '{system("cat " $2 ".txt")}'
108+
109+
ls xyz.txt
110+
111+
echo $?
112+
113+
awk 'BEGIN{s=system("ls xyz.txt"); print "Exit status: " s}'
114+
115+
awk 'BEGIN{sum = 3.1428 + 10; print sum}'
116+
117+
awk 'BEGIN{sum = 3.1428 + 100; print sum}'
118+
119+
awk 'BEGIN{sum = 3.1428 + 10; printf "%f\n", sum}'
120+
121+
awk 'BEGIN{sum = 3.1428 + 10; printf "%.3f\n", sum}'
122+
123+
awk 'BEGIN{pi = 3.14159; printf "[%10.3f]\n", pi}'
124+
125+
awk 'BEGIN{pi = 3.14159; printf "[%-10.3f]\n", pi}'
126+
127+
awk 'BEGIN{pi = 3.14159; printf "%010.3f\n", pi}'
128+
129+
awk 'BEGIN{pi = 3.14159; printf "%e\n", pi}'
130+
131+
awk 'BEGIN{printf "%d\n", 1.99}'
132+
133+
awk 'BEGIN{printf "%+d\n", 100}'
134+
135+
awk 'BEGIN{printf "%+d\n", -100}'
136+
137+
awk 'BEGIN{printf "|%10s|\n", "mango"}'
138+
139+
awk 'BEGIN{printf "|%-10s|\n", "mango"}'
140+
141+
awk '{printf "%.4s\n", $0}' table.txt
142+
143+
awk 'BEGIN{printf "%1$d + %2$d * %1$d = %3$d\n", 3, 4, 15}'
144+
145+
awk 'BEGIN{printf "hex=%1$#x\noct=%1$#o\ndec=%1$d\n", 15}'
146+
147+
awk 'BEGIN{d=10; p=3; pi = 3.14159; printf "%0*.*f\n", d, p, pi}'
148+
149+
awk 'BEGIN{s="solve: 5 % x = 1"; printf s}'
150+
151+
awk 'BEGIN{s="solve: 5 % x = 1"; printf "%s\n", s}'
152+
153+
awk 'BEGIN{printf "n%%d gives the remainder\n"}'
154+
155+
awk 'BEGIN{pi = 3.14159; s = sprintf("%010.3f", pi); print s}'
156+
157+
seq 6 | awk 'NR%2{print > "odd.txt"; next} {print > "even.txt"}'
158+
159+
cat odd.txt
160+
161+
cat even.txt
162+
163+
awk -v OFS='\t' 'NR>1{print $2, $3 > $1".txt"}' marks.txt
164+
165+
cat ECE.txt
166+
167+
awk '{print $2 | "paste -sd,"}' table.txt
168+
169+
awk '{print $2 | "sort | paste -sd,"}' table.txt
170+
171+
awk -v OFS='\t' 'NR>1{print $2, $3 | "sort > "$1".txt"}' marks.txt
172+
173+
cat ECE.txt
174+
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
awk '/^b/{print; if($NF>0) print "------"}' table.txt
2+
3+
awk '/^b/{print; if($NF>0) print "------"; else print "======"}' table.txt
4+
5+
seq 6 | awk '{ORS = NR%3 ? "-" : RS} 1'
6+
7+
awk '/^b/{print; print($NF>0 ? "------" : "======")}' table.txt
8+
9+
awk 'BEGIN{for(i=2; i<7; i+=2) print i}'
10+
11+
awk -v OFS=, '{for(i=1; i<=NF; i++) if($i ~ /^[bm]/) $i="["$i"]"} 1' table.txt
12+
13+
cat marks.txt
14+
15+
awk 'NR>1{d[$1]+=$3; c[$1]++} END{for(k in d) print k, d[k]/c[k]}' marks.txt
16+
17+
awk -v OFS=, '{for(i=1; i<=NF; i++) if($i ~ /b/){NF=i; break}} 1' table.txt
18+
19+
awk 'BEGIN{i=6; while(i>0){print i; i-=2}}'
20+
21+
echo 'titillate' | awk '{while(gsub(/til/, "")) print}'
22+
23+
awk '/\<par/{print "%% " $0; next} {print /s/ ? "X" : "Y"}' word_anchors.txt
24+
25+
seq 3542 4623452 | awk 'NR==2452{print; exit}'
26+
27+
echo $?
28+
29+
awk '/^br/{print "Invalid input"; exit 1}' table.txt
30+
31+
echo $?
32+
33+
awk 'FNR==2{print; exit}' table.txt greeting.txt
34+
35+
awk 'BEGIN{print "hi"; exit; print "hello"}
36+
/^b/;
37+
END{print "bye"}' table.txt
38+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
cat purchases.txt
2+
3+
awk '{print +a[$0] "\t" $0; a[$0]++}' purchases.txt
4+
5+
awk '!a[$0]++' purchases.txt
6+
7+
cat duplicates.txt
8+
9+
awk -F, '!seen[$NF]++' duplicates.txt
10+
11+
awk -F, '!seen[$1,$3]++' duplicates.txt
12+
13+
awk -F, '++seen[$2]==2' duplicates.txt
14+
15+
awk -F, '++seen[$NF]==3' duplicates.txt
16+
17+
tac duplicates.txt | awk -F, '!seen[$NF]++' | tac
18+
19+
awk -F, 'NR==FNR{a[$NF]++; next} a[$NF]>1' duplicates.txt duplicates.txt
20+
21+
awk -F, 'NR==FNR{a[$NF]++; next} a[$NF]>2' duplicates.txt duplicates.txt
22+
23+
awk -F, 'NR==FNR{a[$3]++; next} a[$3]==1' duplicates.txt duplicates.txt
24+

code_snippets/Field_separators.sh

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
cat table.txt
2+
3+
awk '$1 ~ /^b/{print $4}' table.txt
4+
5+
awk -v f=3 '{print $f}' table.txt
6+
7+
awk '{print $NF}' table.txt
8+
9+
awk '{print $(NF-1)}' table.txt
10+
11+
awk '{print $NF-1}' table.txt
12+
13+
echo ' a b c ' | awk '{print NF}'
14+
15+
echo ' a b c ' | awk '{print $1}'
16+
17+
echo ' a b c ' | awk '{print $NF "."}'
18+
19+
printf ' one \t two\t\t\tthree ' | awk '{print NF}'
20+
21+
printf ' one \t two\t\t\tthree ' | awk '{print $2}'
22+
23+
awk 'BEGIN{printf "%.16f\n", 2.999999999999999}'
24+
25+
awk 'BEGIN{printf "%.16f\n", 2.9999999999999999}'
26+
27+
awk '{print $2.999999999999999}' table.txt
28+
29+
awk '{print $2.9999999999999999}' table.txt
30+
31+
echo 'goal:amazing:whistle:kwality' | awk -F: '{print $1}'
32+
33+
echo 'goal:amazing:whistle:kwality' | awk -F: '{print $NF}'
34+
35+
echo 'one;two;three;four' | awk -F';' '{print $3}'
36+
37+
echo '=a=b=c=' | awk -F= '{print $1 "," $NF "."}'
38+
39+
echo 'goal:amazing:whistle:kwality' | awk -v FS=: '{print $2}'
40+
41+
echo '1e4SPT2k6SPT3a5SPT4z0' | awk 'BEGIN{FS="SPT"} {print $3}'
42+
43+
echo 'apple' | awk -F '' '{print $1}'
44+
45+
echo 'apple' | awk -v FS= '{print $NF}'
46+
47+
echo 'αλεπού' | awk -v FS= '{print $3}'
48+
49+
echo 'Sample123string42with777numbers' | awk -F'[0-9]+' '{print $2}'
50+
51+
echo 'Sample123string42with777numbers' | awk -F'[a-zA-Z]+' '{print $2}'
52+
53+
echo 'load;err_msg--\ant,r2..not' | awk -F'\\W+' '{print $3}'
54+
55+
echo 'hi.bye.hello' | awk -F. '{print $2}'
56+
57+
printf 'cool\nnice car\n' | awk -F'[aeiou]' '{print NF-1}'
58+
59+
echo ' a b c ' | awk -F' ' '{print NF}'
60+
61+
echo ' a b c ' | awk -F'[ ]' '{print NF}'
62+
63+
awk '{print $1, $3}' table.txt
64+
65+
echo 'goal:amazing:whistle:kwality' | awk -F: -v OFS=: '{print $2, $NF}'
66+
67+
echo 'goal:amazing:whistle:kwality' | awk 'BEGIN{FS=OFS=":"} {print $2, $NF}'
68+
69+
echo 'goal:amazing:whistle:kwality' | awk -F: -v OFS=- '{print $2, $NF}'
70+
71+
echo 'goal:amazing:whistle:kwality' | awk -F: -v OFS=: '{$2 = 42} 1'
72+
73+
echo 'goal:amazing:whistle:kwality' | awk -F: -v OFS=, '{$2 = 42} 1'
74+
75+
echo ' a b c ' | awk '{$NF = "last"} 1'
76+
77+
echo 'Sample123string42with777numbers' | awk -F'[0-9]+' -v OFS=, '1'
78+
79+
echo 'Sample123string42with777numbers' | awk -F'[0-9]+' -v OFS=, '{$1=$1} 1'
80+
81+
echo 'goal:amazing:whistle:kwality' | awk -F: -v OFS=, '{NF=2} 1'
82+
83+
echo 'goal:amazing:whistle:kwality' | awk -F: -v OFS=: '{$(NF+1)="sea"} 1'
84+
85+
echo 'goal:amazing:whistle:kwality' | awk -F: -v OFS=: '{$8="go"} 1'
86+
87+
echo 'goal:amazing:whistle:kwality' | awk -F: -v OFS=: '{NF=-1} 1'
88+
89+
s='Sample123string42with777numbers'
90+
91+
echo "$s" | awk -v FPAT='[0-9]+' '{print $2}'
92+
93+
echo "$s" | awk -v FPAT='[a-zA-Z]+' -v OFS=, '{$1=$1} 1'
94+
95+
s='eagle,"fox,42",bee,frog'
96+
97+
echo "$s" | awk -F, '{print $2}'
98+
99+
echo "$s" | awk -v FPAT='"[^"]*"|[^,]*' '{print $2}'
100+
101+
cat items.txt
102+
103+
awk -v FIELDWIDTHS='8 4 6' '{print $2}' items.txt
104+
105+
awk -v FIELDWIDTHS='8 4 6' '{print "[" $2 "]"}' items.txt
106+
107+
awk -v FIELDWIDTHS='5 3:3 1:6' '{print "[" $1 "]"}' items.txt
108+
109+
awk -v FIELDWIDTHS='5 3:3 1:6' '{print "[" $2 "]"}' items.txt
110+
111+
awk -v FIELDWIDTHS='5 *' '{print "[" $1 "]"}' items.txt
112+
113+
awk -v FIELDWIDTHS='5 *' '{print "[" $2 "]"}' items.txt
114+

0 commit comments

Comments
 (0)