【一天一个shell命令】文本内容操作系列-awk补充一

简介:

之前我们学习了awk基本入门,我惊喜的发现有awk一篇详细文章,有写念头,不能全部转载,转化成自己的方式来写一些。

主讲内置变量和部分字符串函数 

内置变量(有翻译特殊变量和环境变量,按照官方翻译为内置变量) 

变量

说明

$n 当前记录的第n个字段,字段间由FS分隔。
$0 完整的输入记录。
ARGC 命令行参数的数目。
ARGIND 命令行中当前文件的位置(从0开始算)。
ARGV 包含命令行参数的数组。
BINMODE 在非POSIX系统上,这个变量指定的所有I / O使用二进制模式
CONVFMT 数字转换格式(默认值为%.6g)
ENVIRON 环境变量关联数组。
ERRNO 最后一个系统错误的描述。
FIELDWIDTHS 字段宽度列表(用空格键分隔)。
FILENAME 当前文件名。
FNR 同NR,但相对于当前文件
FPAT

这是一个正则表达式(字符串),告诉gawk基于匹配正则表达式的文本来创建字段

FS 字段分隔符(默认是任何空格)。
IGNORECASE 如果为真,则进行忽略大小写的匹配。
LINT

当这个变量为真(非零或非空),gawk的行为犹如"--lint"命令行选项

NF 当前记录中的字段数。
NR 当前记录数。
OFMT 数字的输出格式(默认值是%.6g)。
OFS 输出字段分隔符(默认值是一个空格)。
ORS 输出记录分隔符(默认值是一个换行符)。
PROCINFO

这个数组的元素提供访问运行awk程序的信息

RLENGTH 由match函数所匹配的字符串的长度。
RS 记录分隔符(默认是一个换行符)。
RT 每次一条记录被读取的设置
RSTART 由match函数所匹配的字符串的第一个位置。

 

SUBSEP

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

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

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

 

简单举例:

1.

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

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

2.

 
 
  1. awk 'END{print FILENAME}' awk.txt 

打印文本FILENAME

3.

 
 
  1. 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.

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

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

2.

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

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

3.

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

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

4.

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

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










本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/yjplxq/964519,如需转载请自行联系原作者
目录
相关文章
|
11天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
28天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
43 1
|
6天前
|
分布式计算 Hadoop Shell
Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第4天】Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
18 5
|
17天前
|
人工智能 机器人 Shell
【shell】shell数组的操作(定义、索引、长度、获取、删除、修改、拼接)
【shell】shell数组的操作(定义、索引、长度、获取、删除、修改、拼接)
|
24天前
|
存储 Shell 数据安全/隐私保护
【Shell 编程指南】Shell read命令 (从标准输入读取数值)
【Shell 编程指南】Shell read命令 (从标准输入读取数值)
22 0
|
28天前
|
网络协议 Shell Linux
【Shell 命令集合 系统管理 】Linux 查询域名的注册信息 whois命令 使用指南
【Shell 命令集合 系统管理 】Linux 查询域名的注册信息 whois命令 使用指南
46 1
|
18天前
|
弹性计算 Shell Perl
ecs服务器shell常用脚本练习(二)
【4月更文挑战第1天】shell代码训练(二)
102 1
|
21天前
|
Java Shell
SpringBoot启动脚本Shell
SpringBoot启动脚本Shell
16 0