Classical 10 Examples for learning AWK
Example 1: Formatting Fields Into Columns
countries
文件:
Canada:3852:25:North America
USA:3615:237:North America
Brazil:3286:134:South America
England:94:56:Europe
France:211:55:Europe
Japan:144:120:Asia
Mexico:762:78:North America
China:3705:1032:Asia
India:1267:746:Asia
What do you want?
将 countries 文件的每一行按照指定格式输出。
Command
awk -F: '{ printf "%-10s\t %d\t %d\t %15s\n",$1,$2,$3,$4 }' countries
Result:
Canada 3852 25 North America
USA 3615 237 North America
Brazil 3286 134 South America
England 94 56 Europe
France 211 55 Europe
Japan 144 120 Asia
Mexico 762 78 North America
China 3705 1032 Asia
India 1267 746 Asia
Analysis:
-
-F
后面接分隔符,这里是冒号。
- 对齐由正负号表示,不显式指明,则继承之前的对齐方式。
- 字符串是
s
,同 standard c 的 stream format。
- 整数是
d
,同 standard c 的 stream format。
- 正则表达式,用
''
单引号括起来,再用{}
花括号括起来,具体的后面会了解。
Example 2: Selecting Records
countries
文件:同 Example 1。
What do you want?
含有`Europe`关键词的行全部输出。
Command:
awk '/Europe/' countries
Result:
England:94:56:Europe
France:211:55:Europe
Analysis:
- 包含
Europe
的关键词的行。
- 必须用
//
括起来。
Eample 3: Comparators
countries
文件:同 Example 2。
What do you want?
第三列值为 55 的行全部输出。
Command:
awk -F: '$3 == 55' countries
Result:
France:211:55:Europe
Analysis:
-
$#
表示指定某一列。
-
==
比较运算符可用。其他比较运算符:
-
!=
not equal to
-
>
greater than
-
<
less than
-
>=
greater than or equal to
-
<=
less than or equal to
Exmaple 4: Using Logical Operators (and, or) to create multiple conditions
cars
文件:
ford mondeo 1990 5800
ford fiesta 1991 4575
honda accord 1991 6000
toyota tercel 1992 6500
vaxhaull astra 1990 5950
vaxhaull carlton 1991 6450
Command:
awk '$3 >=1991 && $4 < 6250' cars
Result:
ford fiesta 1991 4575
honda accord 1991 6000
Analysis:
Example 5: How to run an AWK program file?
Input file:cars
in the above example.
Program file:hello
#!/usr/bin/awk
{
x = "hello"
print x
}
Command:
awk -f hello cars
Result:
hello
hello
hello
hello
hello
hello
Analysis:
- Output
hello
instead of each record(line).
Reference:
http://www.delorie.com/gnu/docs/gawk/gawk_11.html
Example 6: Boost up your AWk program: Use Variables!
Input file:countries
in the example 4
Program file:
#!/usr/bin/awk
{
x = "hello"
print x
}
Command:
awk -f hello countries
Result:
USA:3615:237:North America
Brazil:3286:134:South America
England:94:56:Europe
France:211:55:Europe
Japan:144:120:Asia
Mexico:762:78:North America
China:3705:1032:Asia
India:1267:746:Asia
Analysis:
-
$0
means the current record
Example 7: Use internal variables!
Input file:countries
in the example 4
Program file:hello
#!/usr/bin/awk
{
print FILENAME OFS \
NR OFS \
$1 OFS \
$2 OFS \
$3 OFS \
$4 OFS \
ORS
}
Command:
awk -F: -f hello countries
Result:
countries 1 Canada 3825 25 North merica
countries 2 USA 3615 237 North America
countries 3 Brazil 3286 134 South America
countries 4 England 94 56 Europe
countries 5 France 211 55 Europe
countries 6 Japan 144 120 Asia
countries 7 Mexico 762 78 North America
countries 8 China 3705 1032 Asia
countries 9 India 1267 746 Asia
Analysis:
-
$0
the current record
-
FILENAME
the filename of the current input file
-
NF
number of fields in the current record
-
NR
record number of the current record
-
$#
fields in the current record
-
FS
input field seperator (default is SPACE or TAB)
-
OFS
output field seperator (default is SPACE)
-
RS
input record seperator (default is NEWLINE)
-
ORS
output record seperator (default is NEWLINE)
Example 8: How to write comments in AWK program file?
Input file:countries
Program file:hello
{
# Just test the AWK comment
print $0
}
Command:
awk -F: -f hello countries
Result:
Canada:3852:25:North America
USA:3615:237:North America
Brazil:3286:134:South America
England:94:56:Europe
France:211:55:Europe
Japan:144:120:Asia
Mexico:762:78:North America
China:3705:1032:Asia
India:1267:746:Asia
Example 9: Associative Arrays? Yes!
Input file:countries
Program file:hello
#!/usr/bin/awk
{
capitals["China"]="Beijing"
print capitals["China"]
}
Command:
awk -F: f hello countries
Result:
Beijing
Beijing
Beijing
Beijing
Beijing
Beijing
Beijing
Beijing
Beijing
Analysis:
- How to traverse the associate array?
for (i in capitals)
print i OFS capitals[i]
Example 10: Data Processing and Arithmetic
Input file:countries
Program file:hello
#!/usr/bin/awk
# Demonstration awk program file
BEGIN {
hours = 0
gross = 0
tax = 0
print "NAME RATE HOURS GROSS TAX\n"
}
{
printf "%-10s \t%8.2f \t%d \t%10.2f\t%10.2f \n", $1, $2, $3, $2*$3, $2*$3*0.25
}
END {
hours += $3
gross += ($2 * $3)
tax += ($2 * $3) * 0.25
printf "\nTOTALS:\t\t\t\t%d \t%.2f\t%.2f \n", hours, gross, tax
}
Result:
NAME RATE HOURS GROSS TAX
Canada 3825.00 25 95625.00 23906.25
USA 3615.00 237 856755.00 214188.75
Brazil 3286.00 134 440324.00 110081.00
England 94.00 56 5264.00 1316.00
France 211.00 55 11605.00 2901.25
Japan 144.00 120 17280.00 4320.00
Mexico 762.00 78 59436.00 14859.00
China 3705.00 1032 3823560.00 955890.00
India 1267.00 746 945182.00 236295.50
TOTALS: 2483 6255031.00 1563757.75
Analysis:
Reference
- http://stud.wsi.edu.pl/~robert/awk/
- http://www.linux.gov.cn/shell/awk.htm
分享到:
相关推荐
本资源“C-language-190-classical-examples.zip”正是针对C语言学习者的一份宝贵资料,包含了190个经典实例,每个实例都配有详细的讲解,旨在帮助学习者深入理解和掌握C语言的精髓,为程序员面试和实际项目开发打下...
– Basic algorithms: Chapters 1 through 7 discuss the classical algorithms for machine learning from text such as preprocessing, similarity computation, topic modeling, matrix factorization, ...
When practitioners do circle back to study linear algebra, they learn far more of the field than is required for or relevant to machine learning. Linear algebra is a large field of study that has ...
Some classical methods used in the field of linear algebra,such as linear regression via linear least squares and singular-value decomposition, are linear algebra methods, and other methods, such as ...
This book is a classical material for Reinforcement learning
This book starts by introducing you to supervised learning algorithms such as simple linear regression, the classical multilayer perceptron and more sophisticated deep convolutional networks....
Key FeaturesImplement various deep learning algorithms in Keras and see how deep learning can be used in gamesSee how various deep learning models and practical use cases can be implemented using ...
world examples to give you a strong foundation in Keras Book Description This book starts by introducing you to supervised learning algorithms such as simple linear regression, the classical ...
Ethem Alpaydin's Classical Book of Machine Learning in high quality pdf version compressed
such as the classical label propagation methods, or require a considerable amount of labeled data for training and validation due to high model complexity, such as the recent neural-network-based ...
supported by examples and problems, giving an invaluable resource to the student and researcher for understanding and applying machine learning concepts. The book builds carefully from the basic ...
Classical Root Locus For UAV Degraded Model
This book starts by introducing you to supervised learning algorithms such as simple linear regression, the classical multilayer perceptron and more sophisticated deep convolutional networks....
I wrote this book to pull together the best classical and modern techniques in order to provide a playbook that you can use to get better performance on your next project using deep learning neural ...
supported by examples and problems, giving an invaluable resource to the student and researcher for understanding and applying machine learning concepts. The book builds carefully from the basic ...