<一>awk变量和运算符
2011-12-17 18:08
155 查看
一、变量
$0 完整的输入记录
FILENAME:当前文件名
FS:输入域分隔符(默认是一个空格)
OFS:输出文件分隔符(字段分隔符)(默认值是一个空格)
RS:输入记录分隔符(默认是一个换行符)
ORS:输出记录的分隔符(行分隔符)(默认值是一个换行符)
NF:当前记录的字段数
NR:当前文件的记录数
FNR:和NR类似,打开一个文件二者功能一样;只是针对多文件,新打开文件FNR遍从1累加记录
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ARGC:命令行参数的数目;是一整数,代表命令行上除了选项-v, -f 及其对应的参数之外所有参数的个数
ARGV:包含命令行参数字符串数组,ARGV[0],ARGV[1]....ARGV[ARGC-1]分别代表命令行上相对应的参数
SUBSEP:数组下标分隔符(默认值是\034)
RSTART:由match函数所匹配的字符串的第一个位置
ENVIRON:环境变量关联数组
echo 10 100 1000 10000 |awk '{OFS="\n";print $1,$2,$3,$4}'
awk 'BEGIN{FS=":";ORS="\n"}{ print NR,$1,$NF}' /etc/passwd
awk 'BEGIN{FS=":";ORS="\n"}{ print NR,$1,$NF}' /etc/passwd
awk 'BEGIN{for(i=0;i<ARGC;i++) print ARGV[i]}' a.txt b.txt c.txt
awk 'BEGIN{for(i=0;i<ARGC;i++) print ARGV[i-1]}' a.txt b.txt c.txt
awk 'BEGIN{ay[1,10]=5;ay[10,2]=12}END{ for(k in ay) {split(k,idx,SUBSEP);print idx[1],idx[2],ay[idx[1],idx[2]];}}' /dev/null
二、运算符
1、赋值运算符:
= += -= *= /= %= ^= **= 赋值语句
2、逻辑运算符
|| 逻辑或
&& 逻辑与
3、正则运算符
~ ~! 匹配正则表达式和不匹配正则表达式
4、关系运算符
< <= > >= != == 关系运算符
5、算术运算符
+ - 加,减
* / & 乘,除与求余
+ - ! 一元加,减和逻辑非
^ *** 求幂
++ -- 增加或减少,作为前缀或后缀
6、其它运算符
$ 字段引用
空格 字符串连接符
?: C条件表达式
in 数组中是否存在某键值
运算符 用途
------------------
x^y x的y次幂
x**y 同上
x%y 计算x/y的余数(求模)
x+y x加y
x-y x减y
x*y x乘y
x/y x除y
-y 负y(y的开关符号);也称一目减
++y y加1后使用y(前置加)
y++ 使用y值后加1(后缀加)
--y y减1后使用y(前置减)
y-- 使用后y减1(后缀减)
x=y 将y的值赋给x
x+=y 将x+y的值赋给x
x-=y 将x-y的值赋给x
x*=y 将x*y的值赋给x
x/=y 将x/y的值赋给x x%=y 将x%y的值赋给x
x^=y 将x^y的值赋给x
x**=y 将x**y的值赋给x
本文出自 “Larry学习之路” 博客,请务必保留此出处http://5iqiong.blog.51cto.com/2999926/744318
$0 完整的输入记录
FILENAME:当前文件名
FS:输入域分隔符(默认是一个空格)
OFS:输出文件分隔符(字段分隔符)(默认值是一个空格)
RS:输入记录分隔符(默认是一个换行符)
ORS:输出记录的分隔符(行分隔符)(默认值是一个换行符)
NF:当前记录的字段数
NR:当前文件的记录数
FNR:和NR类似,打开一个文件二者功能一样;只是针对多文件,新打开文件FNR遍从1累加记录
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ARGC:命令行参数的数目;是一整数,代表命令行上除了选项-v, -f 及其对应的参数之外所有参数的个数
ARGV:包含命令行参数字符串数组,ARGV[0],ARGV[1]....ARGV[ARGC-1]分别代表命令行上相对应的参数
SUBSEP:数组下标分隔符(默认值是\034)
RSTART:由match函数所匹配的字符串的第一个位置
ENVIRON:环境变量关联数组
echo 10 100 1000 10000 |awk '{OFS="\n";print $1,$2,$3,$4}'
awk 'BEGIN{FS=":";ORS="\n"}{ print NR,$1,$NF}' /etc/passwd
awk 'BEGIN{FS=":";ORS="\n"}{ print NR,$1,$NF}' /etc/passwd
awk 'BEGIN{for(i=0;i<ARGC;i++) print ARGV[i]}' a.txt b.txt c.txt
awk 'BEGIN{for(i=0;i<ARGC;i++) print ARGV[i-1]}' a.txt b.txt c.txt
awk 'BEGIN{ay[1,10]=5;ay[10,2]=12}END{ for(k in ay) {split(k,idx,SUBSEP);print idx[1],idx[2],ay[idx[1],idx[2]];}}' /dev/null
二、运算符
1、赋值运算符:
= += -= *= /= %= ^= **= 赋值语句
2、逻辑运算符
|| 逻辑或
&& 逻辑与
3、正则运算符
~ ~! 匹配正则表达式和不匹配正则表达式
4、关系运算符
< <= > >= != == 关系运算符
5、算术运算符
+ - 加,减
* / & 乘,除与求余
+ - ! 一元加,减和逻辑非
^ *** 求幂
++ -- 增加或减少,作为前缀或后缀
6、其它运算符
$ 字段引用
空格 字符串连接符
?: C条件表达式
in 数组中是否存在某键值
运算符 用途
------------------
x^y x的y次幂
x**y 同上
x%y 计算x/y的余数(求模)
x+y x加y
x-y x减y
x*y x乘y
x/y x除y
-y 负y(y的开关符号);也称一目减
++y y加1后使用y(前置加)
y++ 使用y值后加1(后缀加)
--y y减1后使用y(前置减)
y-- 使用后y减1(后缀减)
x=y 将y的值赋给x
x+=y 将x+y的值赋给x
x-=y 将x-y的值赋给x
x*=y 将x*y的值赋给x
x/=y 将x/y的值赋给x x%=y 将x%y的值赋给x
x^=y 将x^y的值赋给x
x**=y 将x**y的值赋给x
本文出自 “Larry学习之路” 博客,请务必保留此出处http://5iqiong.blog.51cto.com/2999926/744318
相关文章推荐
- 文本处理工具之AWK讲解<一>
- JAVA第二弹(运算符<一>)
- Android 线程本地变量<一> ThreadLocal源码解析
- Hadoop学习<一>--hadoop安装和环境变量设置
- JavaScript中函数函数的定义与变量的声明<基础知识一>
- Java笔记1 Java编程基础<1>标示符、变量、个别运算符
- Java基础语法<一> 数据类型&运算符
- 关于运算符<一>
- 黑马程序员 Java基础<一> 关键字、常量变量、数据类型
- NS2 分裂机制及代码分析<一>---解释类成员变量与编译类成员变量互操作
- java反射机制初步认识<一>获取成员变量
- How Tomcat Works学习笔记<一>
- 常见java考试题与面试题<一>
- Java多线程——<一>概述、定义任务
- Spring模拟aop静态代理案例<一>
- Tensorflow入门学习网站以及资料<一>
- Linux LCD 驱动编写<一>
- silktest&nbsp;技巧积累&lt;一&gt;
- 一个java程序员的生活<一> -----从大学毕业到开始成为程序员