可以做业务推广的网站有哪些内容,解决方案的网站建设,网络规划设计师视频百度云,深圳建筑工程招投标中心文本三剑客awk#xff1a;
grep 查
sed 增删改查 主要#xff1a;增改
awk 按行取列
awk
awk默认的分隔符#xff1a;空格#xff0c;tab键#xff0c;多个空格自动压缩为一个。
awk的工作原理#xff1a;根据指令信息#xff0c;逐行的读取文本内容#xff0c;然…文本三剑客awk
grep 查
sed 增删改查 主要增改
awk 按行取列
awk
awk默认的分隔符空格tab键多个空格自动压缩为一个。
awk的工作原理根据指令信息逐行的读取文本内容然后按照条件进行格式输出。
awk的选项
-F 指定分隔符默认就是空格
-v 变量赋值
内置变量
$数字 按行需要取出的第几个字段。
$0 打印所有展示所有的文本内容默认
NR 需要处理的行号
NF 处理行的字段个数
$NF 当前行的最后一个字段
FS FS和F是一样的都是指定分隔符
-F: FS:
OFS 指定输出内容的分隔符
RS 行分隔符可以根据RS的设置把文件内容切割成多个记录也可以改变行的分隔符默认是\n回车换行。
命令格式
awk -F 操作符 {动作} 处理对象
-F 指定分隔符如果是空格可以不加
动作默认就是打印。 打印行号
[rootlocalhost opt]# awk {print NR} awk.txt
1
2
3
4
[rootlocalhost opt]# awk {print NR,$0} awk.txt
1 one two three
2 four five six
3 seven eight nine
4 ten
打印指定行
[rootlocalhost opt]# awk NR3{print} awk.txt
seven eight nine
[rootlocalhost opt]# awk NR2,NR4{print} awk.txt #打印2-4行
four five six
seven eight nineten
[rootlocalhost opt]# awk NR2;NR4{print} awk.txt #打印2和4行
four five sixten
取第三行的第三列
[rootlocalhost opt]# cat awk.txt | awk NR3{print $3}
hpc
[rootlocalhost opt]# cat awk.txt | awk NR2{print $3}
3
hpc 如何打印奇偶行
偶数行
[rootlocalhost opt]# awk NR%20{print} awk.txt
four five sixten
奇数行
[rootlocalhost opt]# awk NR%21{print} awk.txt
one two three
seven eight nine
awk怎么使用文本过滤
[rootlocalhost opt]# awk /root/{print} /etc/passwdroot:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[rootlocalhost opt]# awk /^root/{print} /etc/passwd
root:x:0:0:root:/root:/bin/bash
[rootlocalhost opt]# awk /bash$/{print} /etc/passwd
root:x:0:0:root:/root:/bin/bash
zhang:x:1000:1000:zhang:/home/zhang:/bin/bash
dn:x:1001:1001::/home/dn:/bin/bash
使用BEGIN模式打印
awk BEGIN{};{};END{} 文件
BEGIN{...}预先的条件指定awk命令前的初始化操作
{...}处理条件如何多初始值进行操作
END{...}处理完之后的操作一般都是打印。
[rootlocalhost opt]# awk BEGIN{x0};{x};END{print x} awk.txt
4
取幂运算
[rootlocalhost opt]# awk BEGIN{print 3**3}
27
-v 变量赋值
[rootlocalhost opt]# vim awk.sh
read -p 请输入一个数 a
read -p 请输入$a的幂 b
num$(awk -v a$a -v b$b BEGIN{print a^b})
echo $num
[rootlocalhost opt]# sh awk.sh
请输入一个数2
请输入2的幂3
8
FS
用-v来进行赋值
[rootlocalhost opt]# awk -v FS: -v OFS -v OFS {print $1,$3} /etc/passwd
RS
[rootlocalhost opt]# echo $PATH | awk -v RS: {print $1}
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/root/bin
awk的条件判断打印
[rootlocalhost opt]# awk -F: $3999{print $0} /etc/passwd
第三列等于1000
[rootlocalhost opt]# awk -F: $31000{print $0} /etc/passwd
zhang:x:1000:1000:zhang:/home/zhang:/bin/bash
面试题
awk的三元表达式
if else语句
num($3$4)?$3:$4; if else fi
[rootlocalhost opt]# awk -F: {num($3$4)?$3:$4;{print num,$0}} /etc/passwd
if ($3$4)
then
echo $3
else
echo $4
fi
awk的精确筛选
$n( ) 用于比较数值
$n~字符串 该字符包含某个字符串
$n!~字符串 该字段不包含某个字符串
$n字符串 该字段等于这个字符串
$n!字符串 该字符不等于某个字符串
$NF 代表最后一个字符串 打印第7列包含bash这个字段的行取的是行的第一列和最后一列以作为分隔符。
[rootlocalhost opt]# awk -F: $7~bash {print $1,$NF} /etc/passwd
root /bin/bash
zhang /bin/bash
dn /bin/bash 是精确查找
~ 是模糊查找
逻辑关系
且和或
/etc/passwd 第一列等于dn且第七列等于/bin/bash
[rootlocalhost opt]# awk -F: ($1dn)($NF/bin/bash) {print $1,$NF} /etc/passwd
dn /bin/bash
[rootlocalhost opt]# awk -F: ($1ntp)||($NF/bin/bash) {print $1,$NF} /etc/passwd
root /bin/bash
ntp /sbin/nologin
zhang /bin/bash
dn /bin/bash
curl是一个功能强大的命令
获取和发送数据
curl www.baidu.com
curl 192.168.60.20
获取网页内容并且输出
-0 下载文件到本地
-o 将文件下载到指定的路径
-x 发送post请求
-i 可以获取web软件的版本服务端没有隐藏版本号
awk按行取列
awk的精确筛选
awk的运算符
练习
取小数点几位以及小数运算怎么取整数。
[rootlocalhost opt]# num$(awk BEGIN{printf %.2f, 1.2222.222})
[rootlocalhost opt]# echo $num
3.44
[rootlocalhost opt]# num$(awk BEGIN{printf %.F, 1.2222.222})
[rootlocalhost opt]# echo $num
3
显示有空格有点做为分隔符的第二列
[rootlocalhost opt]# cat awk1.txt | awk -F[ .] {print $2}
www
mail
ftp
linux
blog
统计/etc下文件的总大小awk实现
[rootlocalhost opt]# ll /etc/ | awk /^-/{print sum$5} END{print 文件的总大小是:sum/1024M}
1070299
文件的总大小是:1045.21M 作业监控内存cpu和硬盘的根目录超过80%提示用户写成函数库的形式每天早上的8.50分执行一次脚本。
[rootlocalhost opt]# vim hanshuku.sh
. /opt/head.sh
cpu$(cpu)
neicun$(neicun)
gengmulu$(gengmulu)
echo $cpu
echo $neicun
echo $gengmulu
[rootlocalhost opt]# vim head.sh
cpu () {
sum$(top -b -n 1 | awk NR3{printf %.F,$2$4})
if [[ $sum -ge 80 ]]
then
echo cpu使用超过80%了已经有了$sum%。
else
echo cpu使用了$sum%
fi
}
neicun () {
num$(free -m | awk NR2{printf %.F,$3/$2*100})
if [[ $num -ge 80 ]]
then
echo 内存使用超过80%了已经有了$num%。
else
echo 内存使用了$num%
fi
}
gengmulu () {
c$(df -h | awk NR2{print $5} | tr -d %)
if [[ $c -ge 80 ]]
then
echo 硬盘使用超过80%了已经有了$c%。
else
echo 硬盘使用了$c%
fi
}
运行结果
[rootlocalhost opt]# sh hanshuku.sh
cpu使用了0%
内存使用了12%
硬盘使用了27%
定时任务
[rootlocalhost opt]# crontab -e
50 8 * * * sh /opt/hanshuku.sh
*/1 * * * * sh /opt/hanshuku.sh
定时任务的邮件
[rootlocalhost opt]# vim /var/spool/mail/root
From rootlocalhost.localdomain Mon Jun 24 16:16:01 2024
Return-Path: rootlocalhost.localdomain
X-Original-To: root
Delivered-To: rootlocalhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)id 6289060B73E3; Mon, 24 Jun 2024 16:16:01 0800 (CST)
From: (Cron Daemon) rootlocalhost.localdomain
To: rootlocalhost.localdomain
Subject: Cron rootlocalhost sh /opt/hanshuku.sh
Content-Type: text/plain; charsetUTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: XDG_SESSION_ID261
X-Cron-Env: XDG_RUNTIME_DIR/run/user/0
X-Cron-Env: LANGzh_CN.UTF-8
X-Cron-Env: SHELL/bin/sh
X-Cron-Env: HOME/root
X-Cron-Env: PATH/usr/bin:/bin
X-Cron-Env: LOGNAMEroot
X-Cron-Env: USERroot
Message-Id: 20240624081601.6289060B73E3localhost.localdomain
Date: Mon, 24 Jun 2024 16:16:01 0800 (CST)
cpu使用了8%
内存使用了12%
硬盘使用了27%