三剑客
awk
awk是一种编程语言,主要用于在linux/unix下对文本和数据进行处理,是linux/unix下的一个工具。数据可以来自标准输入、一个或多个文件,或其它命令的输出。awk的处理文本和数据的方式:逐行扫描文件,默认从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作?awk的语法: awk [options] ‘commands(地址定位)‘ file(s)options 部分 -F 定义字段分割符号,默认的分隔符是空格 -v 定义变量并赋值 command 部分: ‘范围说明或正则表达式或者{awk命令语句1;awk命令语句2;...}‘ ‘BEGIN{} {} END{}‘ 行处理前 行处理 行处理后? 1、范围说明部分可以是BEGIN、END、逻辑表达式或者为空 2、awk命令语句间用分号间隔 3、引用shell变量需用双引号引起?awk的工作原理:# awk -F: ‘{print $1,$3}‘ /etc/passwd(1)awk使用一行作为输入,并将这一行赋给内部变量$0,每一行也可称为一个记录,以换行符(RS)结束?(2)然后,行被:(默认为空格或制表符)分解成字段(或域),每个字段存储在已编号的变量中,从$1开始。?(3)awk如何知道用空格来分隔字段的呢? 因为有一个内部变量FS来确定字段分隔符。初始时,FS赋为空格?(4)awk打印字段时,将以设置的方法使用print函数打印,awk在打印的字段间加上空格,因为$1,$3之间有一个逗号。逗号比较特殊,它映射为另一个内部变量,称为输出字段分隔符OFS,OFS默认为空格?(5)awk输出之后,将从文件中获取另一行,并将其存储在$0中,覆盖原来的内容,然后将新的字符串分隔成字段并进行处理。该过程将持续到所有行处理完毕?awk的基本应用:$0 :表示当前所有记录$1,$2,$3...$n:awk中用该顺序形式表示files中每行以间隔符号分割的各列的不同字段注:awk默认以空格符为间隔符号将每行分割为单独的字段,也可以使用awk内置变量FS定义间隔符号awk -F: ‘‘awk ‘BEGIN{FS=":"}‘ NF 表示当前记录的字段数(列数)$NF 最后一列$(NF-1) 倒数第二列FNR/NR 行号FILENAME 文件名"\t" 制表符"\n" 换行符"" 打印字符串FS 定义间隔符OFS 定义输出字段分隔符RS 输入记录分割符,默认换行ORS 输出记录分割符,默认换行print 打印函数??一:创建一个文件1.txt?my first language:Javasecond languange:pythonthird language:C??用法:1、awk ‘{print $0}‘ 1.txt 表示print表示打印, $0 表示整个记录,1.txt表示一个文件,所以此条指令的结果就是把这整个文件打印出来结果:my first language:Javasecond languange:pythonthird language:C??2、awk ‘{print $1}‘ 1.txt 表示:打印文本的第一列结果:mysecondthird??3、awk -F ‘:‘ ‘{print $2}‘ 1.txt 表示以":"为分隔符,打印第2列 -F表示指定分割符,也可以是要查询的文本中的其他分割符。结果:Javapythonc??4、awk -F ‘:‘ ‘$2=="Java"{print $2}‘ 表示以":"为分隔符,限制在":"分隔符的第二列为Java的那一项结果:Java??5、awk -F ‘:‘ ‘NR % 2 ==1 {print $2}‘ 1.txt 表示:打印奇数行的第二个字段 NR是一个内置的变量,表示当前正在处理的记录,即当前的记录是第几个记录。结果:Java c??6、awk ‘{if(NR >1) print $2}‘ 1.txt 表示打印第二个及其以后的记录,上面的字段分隔符是空格了,并且 if 语句是在“{}” 里指定的。结果:languange:pythonlanguage:C??7、awk ‘{if($1 < "s") print $1; else print $2}‘ 1.txt 表示:如果第一个字段大于“s",则打印第一个字段,否则打印第二个字段。结果:mylanguange:pythonlanguage:C??8、awk提供了一些内置函数来供我们使用,以下常用的函数如下:tolower():字符转为小写。toupper():字符转为大写length():返回字符串长度。substr():返回子字符串。sqrt():平方根。rand():随机数。例子:
相关推荐
baobaozai 2020-04-29
fenxinzi 2020-03-01
zhiliang 2020-01-31
PHP学习笔记 2019-12-31
jiazhou 2019-11-06
hyfcomeon 2017-02-23
chenpro 2020-07-04
fendou00sd 2020-06-16
RealJianyuan 2020-06-14
cwgxiaoguizi 2020-06-05
chenpro 2020-06-02
Neptune 2020-05-31
老谢的自留地 2020-05-09
YukiRain 2020-05-08
Proudoffaith 2020-04-08
wannagonna 2020-01-13
wandererdl 2019-12-25
chenchuang 2020-01-25
jyj00 2020-01-09