一天一个shell命令 linux文本内容操作系列-awk命令详解

2019-09-23 09:19:20丽君

SUBSEP

数组下标分隔符(默认值是34)。

TEXTDOMAIN 此变量用于程序的国际化

蓝色为新增加的内置变量。

 

简单举例:

1.
01.sed 1q /etc/passwd | awk '{ FS = ":"; print $1 }'


打印密码第一行,用冒号分隔符

2.

awk 'END{print FILENAME}' awk.txt

打印文本FILENAME

3. seq 100 | awk 'NR==4,NR==6'

打印4到6行

 再介绍几个awk内置的字符串函数,也讲一部分。

length(string):
 返回字符串的长度

index(string,serch_string):
返回search_string在字符串中出现的位置

split(string,array,delimiter):
用定界符生成一个字符串列表,并将该列表存入数组

substr(string,array,delimiter):
 在字符串中用字符起止便宜量生成子串,并返回该子串

sub(regex,replacement_str,string):
将正则表达式匹配到的第一处内容替换成replacement_str

gsub(regex,replacement_str,string):
和sub()类似。不过该函数会替换正则表达式匹配到的所有内容

match(regex,string):
检查正则表达式是否能够匹配字符串。如果能够匹配,返回非0值;否则,返回0.match()有两个相关的特殊变量,分别是RSTART喝RLENGTH。变量RSTART包含正则表达式所匹配内容的其实位置,而变量RLENGTH包含正则表达式所匹配内容的长度。
 

举例:

1.$ awk '{ sub(/test/, "mytest"); print }' testfile

在整个记录中匹配,替换只发生在第一次匹配发生的时候

2.$ awk '{ sub(/test/, "mytest"); $1}; print }' testfile

在整个记录的第一个域中进行匹配,替换只发生在第一次匹配发生的时候

3.$ awk '{ print index("test", "mytest") }' testfile

实例返回test在mytest的位置,结果应该是3

4.$ awk '{ print length( "test" ) }'

实例返回test字符串的长度。

awk补充二

这节可能要写的比较粗了,时间太少。

一. 内置函数
注意一种约定俗称语法习惯: [a]代表a可选.

数字函数(Numeric Functions)

函数名

说明

atan2(y,x) 返回y/x弧的反正切
cos(x) 返回x的余弦
exp(x) 返回x的指数
int(x) 返回最靠近的整数,风向标指向0
log(x) 返回x的自然对数
rand() 返回随机数
sin(x) 返回x的正弦
sqrt(x) 返回x的正平方根
srand([x]) 生成随机数,可以设置起点