Linux命令学习1(awk、grep、sed)

1、AWK内部代码编写(为了更好的理解)

BEGIN{size=0}
{
    if($5>4096){
    size=size+$5;
    printf("%-10i%s\n",$5,$9)}
}
END{print "size is",size/1024/1024}

2、去掉回车,加上其他部分

ls -l|awk 'BEGIN{size=0}{if($5>4096){size=size+$5;printf("%-10i%s\n",$5,$9)}}END{print "size is",size/1024/1024}'

目的:要查看当前目录中大于4kB的文件的,并将其大小相加求出总大小。

3、查看当前目录大于4Kb的文件

ls -l|awk '{if($5>4096)printf("%-10i%s\n",$5,$9)}'

4、脚本中AWK使用

目的:shell脚本中除法只能为整除,用AWK可以是小数

复制代码
#!/bin/bash
resault=`ntpdate -q 172.17.0.21 172.17.0.22 |grep stratum |awk '{print $6}'|sed "s/,//g"|awk '{offset[NR]=$1}END{print offset[2]*1000000-offset[1]*1000000}'`
if [ $resault -lt 0 ]; then
        let resault=0-$resault
fi
if [ $resault -gt 100 ]; then
        #let resault=$resault/1000;
        echo "`date "+%Y-%m-%d %H:%M:%S"` NTP server 172.17.0.21 and 172.17.0.22 offset `awk 'BEGIN{printf"%.4f\n",'$resault'/1000}'` ms"
fi
复制代码

 

5、AWK常用参数 -F(表示已什么为分隔符)

grep 'nologin$' /etc/passwd|awk -F ':' '{print $1}'

目的:查看nologin用户

grep查看以nologin结尾的行,AWK查询以":"分隔的第一列的信息

6、grep常用参数

  -c:打印符合要求的行数(及统计符合要求多少行)
     -i:忽略大小写
     -n:打印符合要求的行,并显示行号
     -v:反着打b印(及不包含符合要求的内容)

grep -c 'nologin$' /etc/passwd

目的:查询nologin用户的个数

grep -v 'nologin$' /etc/passwd

目的:查询不是nologin用户

7、sed

ip addr|sed -rn 's#^.*inet (.*)/24.*$#\1#gp'

目的:过滤IP地址

-r:正则表达

-n:取消sed默认的打印,和p连用,打印匹配行

 #(..)#\1:匹配子串,保存匹配的字符

 

sed -i "s/Hostname=Zabbix server/Hostname=`ip addr|sed -nr 's#^.*inet (.*)/24.*$#\1#gp'|grep -v 192.168.122.1`/" /etc/zabbix/zabbix_agentd.conf

目的:替换Zabbix server为本机IP

posted @   正在努力的BOY  阅读(612)  评论(1编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示