shell三剑客

shell三剑客

=grep==

grep 的全程为Global search Regular Expression and Print out the line (类似windows 平台的ctrl+F)

过滤出/etc/passwd 包含root的行

cat /etc/passwd|grep root

不区分大小写搜索root行:-i

grep -i root /tmp/passwd

显示搜索结果的行号:-n

grep -n root /tmp/passwd

统计搜索到root的行数,计数:-c

grep  -c root /tmp/passwd

精确匹配root行:-w

cat /tmp/passwd |grep -w root

搜索包含root和mail的行: egrep|grep -E

cat /etc/passwd | grep -e root -e mail

cat /etc/passwd | egrep "root|mail"

cat /etc/passwd | grep -E "root|mail"

屏蔽标准输出:-q quiet 静默模式

cat /etc/passwd | grep -q “root” |echo $?配合使用

只打印匹配项root:-o only

cat /etc/passwd | grep -o "root"

打印除了包含root的行 -v(取反)

cat /etc/passwd |grep -v "root"

sed====

string+edit=流编辑器

sed 两个空间:模式空间,保持空间

模式空间:sed处理文本内容行的一个临时缓冲区,模式空间中的内容会主动打印到标准输出,并自动清空模式空间

保持空间:sed处理文本内容行的另一个临时缓冲区,不同的是保持空间内容不会主动清空,也不会主动打印到标准输出,而是需要sed命令来进行处理

小写的都是表示:覆盖

大写的都是表示:追加

n|N(next)

n : 读取下一行覆盖模式空间中的行

N:读取下一行并追加到模式空间中的行后面

x:exchange 空间交换

把模式空间中的内容he保持空间中的内容互换,初始保持空间中为空

h|H(hold)

h:把模式空间中的内容覆盖至保持空间中

H:把模式空间中的内容追加至保持空间中

g|G(get)

g:把保持空间中的内容覆盖至模式空间中

G:把保持空间中的内容追加至模式空间中

用法: sed [选项]… {脚本(如果没有其他脚本)} [输入文件]…

-i:会修改源文件!

-n:取消自动打印模式空间的内容

s:表示替换

p:print 表示打印

d:delete 表示删除

a:append 表示追加

i:insert 表示插入

c:整行替换

w:write 将匹配行写入指定文件内

r:read 读取指定文件.文件合并

=:用来显示行号的

!:表示取反的意思

将所有的root替换为huazai007

sed -i 's/root/huazai007/g' /etc/passwd

指定从第二个huazai007 开始替换为root

sed -i "s/huazai007/root/2g" /tmp/passwd

将mail替换为ligenjian(只打印,不修改源文件!)

sed 's/mail/ligenjian/' /etc/passwd|grep ligenjian

将以ftp开头的替换为ftp_wg(不修改源文件)

&:表示被匹配的字符(ftp)

sed "s/^ftp/ftp_wg/g" /tmp/passwd | grep ftp_wg

sed "s/^ftp/&_wg/g" /tmp/passwd | grep ftp_wg

打印第10行

sed -n '10p' /etc/passwd

打印 第5行到第10行的内容

sed -n '5,10p' /etc/passwd

从第5行开始,往下打印3行

sed -n '5,+3p' num

打印奇数行

sed -n '1~2p' num

打印偶数行

sed -n '2~2p' num

删除第二行

sed '2d' num

删除 1-3行

sed '1,3d' num

删除空行(^开头 $结尾)

sed '/^$/d' num

删除以huazai007开头的行

sed '/^huazai007/d' /tmp/passwd |grep huazai

删除以bash 结尾的行

sed '/bash$/d' /etc/passwd|grep bash

在以ftp开头的行后面追加一行字符“wg001”

sed '/^ftp/a"wg001"' /etc/passwd

在以nologin 结尾的行后面追加一行字符“bw007”

sed '/nologin$/a"bw007"' /etc/passwd

在第三行给我追加一个字符“wg002”

sed '3a"wg002"' /etc/passwd

在第三行的前面插入一行字符“wg003”

sed '3i"wg003"' /etc/passwd

在以mail开头的行前面插入一行字符“wg004”

sed '/^mail/i"wg004"' /etc/passwd

将包含mail的行整行替换为“wg005”

sed '/mail/c"wg005"' /etc/passwd

将以nologin结尾的整行替换为 wg006

sed '/nologin$/c"wg005"' /etc/passwd

将以nologin结尾的行 写入到指定文件:result.txt里

sed '/nologin$/w /tmp/result.txt' /etc/passwd

将1-10行写入到/tmp/result.txt里

sed '1,10w /tmp/result.txt' /etc/passwd

读取 /tmp/result.txt 并将内容写入到 以mysql开头nologin结尾的行后面

sed '/^mail.*nologin$/r /tmp/result.txt' /etc/passwd

显示最后一行的行号

sed '$=' /etc/passwd

除了#号开头的行都打印出来

sed -n '/^#/!p' /tmp/result.txt

awk===

awk 来历

其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母

awk 用法:

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...

Usage: awk POSIX or GNU style options 'program' file ...

打印 /etc/passwd 的第一个字段

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

打印/etc/passwd 的最后一个字段 $NF

awk -F ':' '{print $NF}' /etc/passwd

打印/etc/passwd 的倒数第二个字段:请使用$NF表示

awk -F ':' '{print $(NF-1)}' /tmp/passwd

NR:表示当前处理的是第几行

打印第二行

awk 'NR==2 {print}' /etc/passwd

打印第三行的倒数第三个字段 /etc/passwd

awk -F ':' 'NR=3 {print $(NF-2)}' /etc/passwd

打印第三行以后的行的第一个字段 /etc/passwd

 awk -F ':' 'NR>3 {print $1}' /etc/passwd

打印第三行之前的行的第一个字段

 awk -F ':' 'NR<3 {print $1}' /etc/passwd

awk 内置函数

toupper():用于将字符变为大写

awk -F ':' '{print toupper($1)}' /etc/passwd|head -n2

tolower():用于将字符变为小写

awk '{print tolower($1)}' /tmp/aa

打印包含root的行

awk '/root/{print}' /etc/passwd

打印第一个字段为ftp的行

awk -F ':' '$1=="ftp" {print}' /etc/passwd

打印第三个字段为2的行

awk -F ':' '$3=="2" {print}' /etc/passwd

假如$1==root 打印第一个字段,否则打印第二个字段

awk -F ':' '{if (1=="root") print;else print 2}' /etc/passwd

假如 最后一个字段为nologin 那么打印第一个字段,否则打印第二字段

awk -F ':' '{if (NF=="/sbin/nologin") print 1;else print $2}' /etc/passwd
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RDZ-hyd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值