Awk是为高级文本处理而设计的非常强大的工具。它逐行搜索扫描文件,将输入的每行分割成字段,将输入行或字段与模式进行比较,并对匹配的结果执行操作。 本节将使用sub和gsub函数和awk命令来删除文件中的制表符和空格。我们将使用以下文本文件作为本文中所有示例的输入文件:
@localhost ~]# cat <> content.txt
出现大于号时将以下内容复制到终端,将文本内容保存到content.txt文件中。
30000
删除文件中的所有空白行 可以使用awk的特殊变量
NF
,从文件中删除所有空白行。例如,删除文件content.txt中的所有空白行。
@localhost ~]# awk NF content.txt
删除每行开头或者末尾的空格和制表符 使用awk命令在文件开头找到一个或多个空格或制表符并删除。可以使用以下命令:
@localhost ~]# awk
命令行中的意思是:使用sub函数找到开头是制表符和空格的行,并替换空格和制表符为空。注意:sub()函数替换只发生在第一次匹配的时候,也就是一行中有多个空格或多个制表符,只替换左面的第一个。 删除末尾的空格和制表符可以使用下面的命令:
@localhost ~]# awk
同时查询开头和末尾的空格和制表符,可以使用下面命令:
@localhost ~]# awk
gsub函数表示满足条件,替换所有的匹配字符。 倒序列出文件中的所有行 它记录数组中的所有行,并将它们以相反的顺序排列。使用以下命令:
@localhost ~]# awk
添加行号为每行内容 使用以下命令使用NF内置变量对非空行进行编号:
@localhost ~]# awk
打印包含特定字符串的行数 使用以下命令来打印包含engineer的总行数:
@localhost ~]# awk
打印与指定字符串匹配的行 下面实例中,筛选出含有 engineer字符串的行:
@localhost ~]# awk
打印与指定字符串不匹配的行 下面实例中,打印不包含字符串 jayesh 的行:
@localhost ~]# awk
替换字符串 实例一:将content.txt中的字符串“ engineer”替换为“ doctor”,用到gsub()函数:
@localhost ~]# awk
实例二:查找字符串“ jayesh”,“ hitesh”或“ bhavesh”,并将其替换为字符串“ mahesh”,运行以下命令:
@localhost ~]# awk
配合df命令,显示磁盘空间 可以将awk命令与df一起使用,只显示设备名称和可用空间、使用率。
@localhost ~]# df -h | awk
查看每个IP打开的连接数 如果认为服务器受到攻击,那么这种awk单行代码非常有用。它将显示服务器的打开连接列表,并按数量对它们进行排序。
@localhost ~]# netstat -ntu|awk
总 结 我们通过实际示例了解如何使用一行awk命令执行日常任务。
良许个人微信
添加良许个人微信即送3套程序员必读资料
→ 精选技术资料共享
→ 高手如云交流社群
本公众号全部博文已整理成一个目录,请在公众号里回复「 m 」获取!
推荐阅读:
中美日印程序员收入对比
Linux安装软件时90%的人会遇到这个报错,如何解决?
《最受欢迎的男友职业排行榜Top10》
5T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,单片机,树莓派,等等。在公众号内回复「1024」,即可免费获取!!