awk学习记录
2017-08-07 00:00
344 查看
1.awk抽取字段练习
awk脚本由各种操作和模式组成,根据分隔符(-F选项),默认为空格,读取的内容依次放置到对应的域中,一行一行记录读取,直到文件尾
test.txt源文件内容
A.执行带分隔符的命令。(输出第一个和第四个字段)
B.执行不带分隔符的命令。(默认空格分隔,同样输出第一个和第四个字段)
源文件内容
执行后
打印所有域并把结果重定向到sav.txt中
和上例相似,不同的是将在屏幕上显示出来
表示打信息头,即输入的内容的第一行前加上"NAME GRADE\n----",同时内容以tab分开
同时打印信息头和信息尾
匹配:awk '{if ($4~/d4/) print $0}' test2.txt 表示如果第四个域包含d4,就打印整条
精确匹配,只打印第3域等于"d3"的记录
不匹配: 打印整条不包含d3的记录
awk脚本由各种操作和模式组成,根据分隔符(-F选项),默认为空格,读取的内容依次放置到对应的域中,一行一行记录读取,直到文件尾
test.txt源文件内容
11111111111111:a2: a3: a4 222222222222: b2: b3: b4 333333333333: c2 :c3: c4 4444444444444: d2: d3: d4: d5
A.执行带分隔符的命令。(输出第一个和第四个字段)
[root@iZ94ela31u0Z 4]# awk -F : '{print $1,$4}' test.txt 11111111111111 a4 222222222222 b4 333333333333 c4 4444444444444 d4
B.执行不带分隔符的命令。(默认空格分隔,同样输出第一个和第四个字段)
源文件内容
[root@iZ94ela31u0Z 4]# cat test2.txt 11111111111111 a2 a3 a4 222222222222 b2 b3 b4 333333333333 c2 c3 c4 4444444444444 d2 d3 d4 d5
执行后
[root@iZ94ela31u0Z 4]# awk '{print $1,$4}' test2.txt 11111111111111 a4 222222222222 b4 333333333333 c4 4444444444444 d4
2.域和记录:
awk执行时,其浏览标记为$1,$2...$n,这种方法称为域标记。使用$1,$3表示参照第1和第3域,注意这里使用逗号分隔域,使用$0表示使用所有域。例如:打印所有域并把结果重定向到sav.txt中
[root@iZ94ela31u0Z 4]# awk '{print $0}' test.txt > sav.txt
[root@iZ94ela31u0Z 4]# cat sav.txt
11111111111111:a2: a3: a4 222222222222: b2: b3: b4 333333333333: c2 :c3: c4 4444444444444: d2: d3: d4: d5
和上例相似,不同的是将在屏幕上显示出来
[root@iZ94ela31u0Z 4]# awk '{print $0 }' test.txt sav.txt
11111111111111:a2: a3: a4 222222222222: b2: b3: b4 333333333333: c2 :c3: c4 4444444444444: d2: d3: d4: d5
表示打信息头,即输入的内容的第一行前加上"NAME GRADE\n----",同时内容以tab分开
[root@iZ94ela31u0Z 4]# awk 'BEGIN {print "NAME GRADE\n----"}{print $1"\t"$4}' test2.txt NAME GRADE ---- 11111111111111 a4 222222222222 b4 333333333333 c4 4444444444444 d4
同时打印信息头和信息尾
[root@iZ94ela31u0Z 4]# awk 'BEGIN {print "tianjin"} { print $1} END{pint "END"} ' test2.txt tianjin 11111111111111 222222222222 333333333333 4444444444444
3.条件操作符:
<、<=、==、!=、>=、~匹配正则表达式、!~不匹配正则表达式匹配:awk '{if ($4~/d4/) print $0}' test2.txt 表示如果第四个域包含d4,就打印整条
[root@iZ94ela31u0Z 4]# awk '{if($4~/d4/) print $0}' test2.txt 4444444444444 d2 d3 d4 d5
精确匹配,只打印第3域等于"d3"的记录
[root@iZ94ela31u0Z 4]# awk '$3=="d3" {print $0}' test2.txt 4444444444444 d2 d3 d4 d5
不匹配: 打印整条不包含d3的记录
[root@iZ94ela31u0Z 4]# awk '$0 !~ /d3/' test2.txt 11111111111111 a2 a3 a4 222222222222 b2 b3 b4 333333333333 c2 c3 c4
相关文章推荐
- awk 学习记录
- awk日志分析学习记录
- awk学习记录
- awk学习随常记录
- awk的基本使用--我的学习记录
- awk学习记录
- awk 学习记录1
- awk实例操作学习记录
- 策略模式 Strategy -- 学习HeadFirst设计模式记录
- 每天记录一点学习心得!
- linux awk 学习笔记三(结构化命令、函数)
- AWK 学习(转)
- SpringMVC学习记录(六)--Validator验证
- 2017.2.28 学习记录
- C++学习记录10--冒泡排序
- JavaScript 的学习记录。
- 吐血记录:Jetson Tx2 开发板配置caffe深度学习环境
- 2017.2.28 学习记录
- 凸优化学习记录开贴
- 应该要对学习进行整理记录了