返回顶部
首页 > 资讯 > 数据库 >awk命令(2)
  • 404
分享到

awk命令(2)

2024-04-02 19:04:59 404人浏览 八月长安
摘要

一、awk的正则表达式1.正则表达式常见的用法[A-Z]一个大写字母[a-z]一个小写字母[0-9]一个数字[^A-Z]除了大写字母之外的一个字符[^a-zA-Z]一个非英文字母的字符[^a-zA-Z0-9

一、awk的正则表达式

1.正则表达式常见的用法

[A-Z]一个大写字母

[a-z]一个小写字母

[0-9]一个数字

[^A-Z]除了大写字母之外的一个字符

[^a-zA-Z]一个非英文字母的字符

[^a-zA-Z0-9]一个非英文字母、且非数字的字符

[a-z]\{3,5\}代表以小写字母组成的字符串,长度是3~5


2.查看tcp端口状态

[root@localhost ~]# netstat -ltn

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State      

tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      

tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      

tcp        0      0 0.0.0.0:817                 0.0.0.0:*                   LISTEN      

tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      

tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      

tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN      

tcp        0      0 :::5989                     :::*                        LISTEN      

tcp        0      0 :::22                       :::*                        LISTEN  


3.截取端口信息

[root@localhost ~]# netstat -ltn |awk '{print $4}' |awk -F: '/[0-9]$/ {print $NF}'

2208

111

817

631

25

2207

5989

22


4.打印匹配mysql或者oracle的数据

[root@localhost ~]# awk '$0~/Mysql|oracle/{print $0}' /etc/passwd

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

oracle:x:500:501::/home/oracle:/bin/bash



5.打印匹配m或o或r开始的数据

[root@localhost ~]# awk '$0~/^[mor]/{print $0}' /etc/passwd

root:x:0:0:root:/root:/bin/bash

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

mailnull:x:47:47::/var/spool/MQueue:/sbin/nologin

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

oracle:x:500:501::/home/oracle:/bin/bash


6.打印非字母的数据

[root@localhost ~]# awk  '{if($0~/^[^a-zA-Z]/) print $0}' /etc/passwd



二、awk变量、判断和循环的简单用法

1,定义变量a="name is:",打印变量a和第一列

[root@localhost ~]# awk -F: '{a="name is:"} /root/ {print a,$1}' /etc/passwd

name is: root

name is: operator


2.begin定义变量,定义变量aa=0,匹配root就加1,完成之后再打印命令aa

[root@localhost ~]# awk 'BEGIN{aa=0} /root/ {aa++} END{print aa}' /etc/passwd

2


3.if判断

[root@localhost ~]# awk -F: '{if($7!~"nologin") print $1,$7;else print NR,$NF}' /etc/passwd 


root /bin/bash

2 /sbin/nologin

sync /bin/sync

shutdown /sbin/shutdown

9 /sbin/nologin

32 /sbin/nologin

mysql /bin/bash

oracle /bin/bash

...


4.循环

if查看有两行

[root@localhost ~]# awk '{if($0~/root/) print $0}' /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin


while只查询一行就退出

[root@localhost ~]# awk '{while ($0~/root/) {print $0;exit}}' /etc/passwd

root:x:0:0:root:/root:/bin/bash



三、&&和||

[root@localhost shell]#tail -3 /etc/passwd |awk -F: '{if($0 ~ "27" && $0 ~ "bash") print $0 }'

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

[root@localhost shell]# tail -3 /etc/passwd |awk -F: '{if($0 ~ "mysql" || $0 ~ "oracle") print $0 }'

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

oracle:x:500:501::/home/oracle:/bin/bash


四、awk内置变量

RS:行分隔符

FS:列分隔符

OFS:定义列分隔符

ORS:定义行分隔符,默认是\n转行

FILENAME:文件名

FNR:当awk处理多个文件时,awk NR变量会给出针对所有文件的当前记录号(行号),Awk FNR 会显示每个文件的当前行号。



RS记录行分隔符,默认的分隔符是\n。

[root@localhost ~]# echo "1---2---3" |awk 'BEGIN{RS="---"}{print}'

1

2

3

ORS记录输出分隔符,默认值是\n。ORS可以看成RS的逆向过程。

[root@localhost ~]# seq 3 |awk 'ORS=NR%3?"---":"\n"{print}'

1---2---3

[root@localhost ~]# seq 3 |awk '{ORS="---";print}';echo

1---2---3---


把---替换成***,FS和OFS互相替换

[root@localhost ~]# echo "1---2---3" |awk -F--- 'BEGIN {OFS="***"}{print $1,$2,$3}'

1***2***3


FILENAME的用法

[root@localhost shell]#awk 'BEGIN {FS=":"} {print NF,NR,$NF,$0}END{print "====================================================\n" FILENAME}' /etc/passwd

1 1 root:x:0:0:root:/root:/bin/bash root:x:0:0:root:/root:/bin/bash

1 2 bin:x:1:1:bin:/bin:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin

1 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin

1 4 adm:x:3:4:adm:/var/adm:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin

....

1 40 oracle:x:500:501::/home/oracle:/bin/bash oracle:x:500:501::/home/oracle:/bin/bash

====================================================

/etc/passwd


五、awk内置的字符串函数

1.gsub(r,s)在整个$0中用s替换r

[root@localhost ~]# awk 'gsub ("root","bob"){print $0}' /etc/passwd

bob:x:0:0:bob:/bob:/bin/bash

operator:x:11:0:operator:/bob:/sbin/nologin


效果等同于sed的全局替换

[root@localhost ~]# sed -n 's/root/bob/gp'  /etc/passwd

bob:x:0:0:bob:/bob:/bin/bash

operator:x:11:0:operator:/bob:/sbin/nologin



gsub(r,s,t)在整个t中用s替换r

[root@localhost ~]# awk 'gsub ("root","bob",$2){print $0}' sedtest.txt

root bob root

root bob root


2.sub(r,s)用$0中最左边最长的子串代替s

[root@localhost ~]# awk 'sub ("root","bob"){print $0}' /etc/passwd

bob:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/bob:/sbin/nologin


效果等同于sed局部替换

[root@localhost ~]# sed -n 's/root/bob/p'  /etc/passwd

bob:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/bob:/sbin/nologin


3.index(s,t)返回s中字符串t的位置

[root@localhost ~]# awk 'BEGIN{print index("I love you","ov")}'

4


4.length(s)返回s长度

[root@localhost ~]# awk 'BEGIN{print length("I love you")}'

10


5.match(s,r)测试s是否包含匹配r的字符串

[root@localhost ~]# awk 'BEGIN{print match("I love you","v")}'

5

[root@localhost ~]# awk 'BEGIN{print match("I love you","a")}'

0


6.split(s,a,fs)在fs上将s分成序列a


7.substr(s,p)返回字符串s中从p开始的后缀部分


8.substr(s,p,n)返回字符串s中从p开始长度为n的后缀部分



六、awk内置数学函数

int(x)

sqrt(x)

exp(x)

log(x)

sin(x)

cos(x)


您可能感兴趣的文档:

--结束END--

本文标题: awk命令(2)

本文链接: https://lsjlt.com/news/36797.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • awk命令(2)
    一、awk的正则表达式1.正则表达式常见的用法[A-Z]一个大写字母[a-z]一个小写字母[0-9]一个数字[^A-Z]除了大写字母之外的一个字符[^a-zA-Z]一个非英文字母的字符[^a-zA-Z0-9...
    99+
    2024-04-02
  • awk命令(1)
    一、awk的优点和缺点:优点:1.awk用来取列,单独取列简单方便      2.awk支持正则表达式      3.awk支持变量  ...
    99+
    2024-04-02
  • 【Linux】ps -ef|grep -v grep|awk ‘{print $2}‘ 命令详解
    第一步:grep -v grep grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用...
    99+
    2023-10-11
    linux 运维 服务器 Powered by 金山文档
  • awk命令学习
    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程: 依次对每一行进行处理,然后输出awk命令形式:awk [-F|...
    99+
    2024-04-02
  • awk命令详解
    目录 一、awk概述 1.工作原理 2.语法格式  3.awk常用的内建变量 二、按行输出文本 1.输出所有内容 2.输出指定行号的内容 3.输出奇偶行内容 4.输出匹配行的行内容 二、按字段输出文本 1.输出指定字段 2.输出结果指定分隔...
    99+
    2023-10-21
    linux 运维 服务器
  • Linux awk命令详解
    awk 文章目录 awkLinux三剑客grep 查找与匹配文本sed 文本编辑,处理匹配到的文本内容awk 格式化文本文件,对文本文件进行更复杂的加工处理分析 输出第二列内容输出多...
    99+
    2023-09-11
    linux 服务器 运维
  • Linux awk 命令详解
    AWK是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符awk是一个强...
    99+
    2023-06-05
  • awk命令如何使用
    今天小编给大家分享一下awk命令如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Awk模式Awk支持不同类型的模式,包...
    99+
    2023-06-27
  • 详解Linux中的awk命令
    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。...
    99+
    2022-06-04
    linux awk 命令 linux awk
  • linux中awk命令怎么用
    这篇文章给大家分享的是有关linux中awk命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。awk是一种模式扫描和处理语言,在对数据进行分析处理时,是十分强大的工具。awk [options] '...
    99+
    2023-06-09
  • Linux中“awk”命令的用法
    Linux中“awk”命令的用法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符...
    99+
    2023-06-05
  • Linux命令学习手册-awk
    awk '条件类型1{动作1} 条件类型2{动作2} ...' filename功能相较于 sed 常常作用于一整个行的处理, awk 则比较倾向于一行当中分成数个『字段』来处理。描述awk 的处理流程读入第一行,并将第一行的资料填入 $0...
    99+
    2023-06-05
  • Unix中awk命令怎么用
    小编给大家分享一下Unix中awk命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!awk 命令不仅提供了简单的输入字符串筛选功能,还包含提取数据列、打印简...
    99+
    2023-06-16
  • linux awk命令如何使用
    今天小编给大家分享一下linux awk命令如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-02-02
    linux awk
  • linux awk时间计算脚本及awk命令详解
    在linux如果计划时间是个麻烦事, 用awk脚本如下 BEGIN {FS=":";OFS=":"} {total_seconds=total_seconds+$3} total_seconds&g...
    99+
    2022-06-04
    详解 脚本 命令
  • 如何使用awk的next命令
    这篇文章将为大家详细讲解有关如何使用awk的next命令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。要明白它是如何工作的, 让我们来分析一下 food_list.txt 它看起来像这样:Food&nbs...
    99+
    2023-06-12
  • linux中的Awk命令怎么用
    这篇文章主要介绍linux中的Awk命令怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Awk 是一个强大的工具,可以执行某些可能由其它常见实用程序(包括 sort)来完成的任务。Awk 是个普遍存在的 Unix...
    99+
    2023-06-16
  • awk中next命令怎么使用
    这篇文章主要介绍了awk中next命令怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇awk中next命令怎么使用文章都会有所收获,下面我们一起来看看吧。awk的next相当于循环中continue的作用...
    99+
    2023-06-27
  • Linux的awk命令怎么使用
    今天小编给大家分享一下Linux的awk命令怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。awk是一款文本分析工具a...
    99+
    2023-06-28
  • linux中如何使用awk命令
    这篇文章将为大家详细讲解有关linux中如何使用awk命令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作