linux shell中的文本处理

grep

Global search regular expression and print out the line
全面搜索研究正则表达式并显示出来
grep命令时一种强大的文本搜索工具,根据用户指定的“模式”对目标文本进行匹配检查。打印匹配到的行
由正则表达式或者字符及基本文本字符所编写的过滤条件

grep  匹配条件    处理文件

在这里插入图片描述

grep   root  passwd

在这里插入图片描述

grep  -i  root passwd	##不区分大小写

在这里插入图片描述

grep  -i  "\<root"  passwd   ##root前没有其他字

在这里插入图片描述

grep  -i  "root\>"  passwd   ##root后没有其他字

在这里插入图片描述

grep  -i  "^root"   passwd   ##以root开头

在这里插入图片描述

grep  -i  "root$"   passwd   ##以root结尾

在这里插入图片描述

grep  -E  "root|ROOT" passwd   ##当使用扩展正则时应加E

在这里插入图片描述

grep 中字符的匹配次数设定

*	字符出现 0-任意次![在这里插入图片描述](https://img-blog.csdnimg.cn/20190228110023519.png)
\?	字符出现 0-1次
\+	字符出现 1-任意次
{n}	字符出现 n次
{n,m}  	字符最少出现n次,最多出现m次
{n,}	字符最少出现n次

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

sed

行编辑器
stream editor
用来操作纯 ASCII 码的文本
处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space)可以指定仅仅处理哪些行
sed 符合模式条件的处理 不符合条件的不予处理
处理完成之后把缓冲区的内容送往屏幕
接着处理下一行,这样不断重复,知道文件末尾

sed 对字符的处理

p 显示
d 删除
a 添加
c 替换
w 写入
i 插入
-n  ##仅显示script处理后的结果
sed -n /^#/p fstab  ##   显示以#开头的行

在这里插入图片描述

sed -n '/^#/!'p fstab   ##显示不以#开头的行

在这里插入图片描述

cat -n fstab | sed -n '6p'  ##显示第六行 

在这里插入图片描述

cat -n fstab | sed -n '6p;3p'  ##显示第六行和第三行

在这里插入图片描述

cat -n fstab | sed -n '2,6!p'  ##显示除了2到6行以外行

在这里插入图片描述

d 模式操作
sed '/^UUID/d' fstab      ##显示除UUID开头的行

在这里插入图片描述

sed '/^$/d' fstab 	##显示除空行以外的行

在这里插入图片描述

sed '1,4d' fstab       ##显示除1到4行以外行

在这里插入图片描述

w 模式操作
sed '/^#/w /mnt/testfile' fstab  ##将fstab#开头行内容写入testfile 
sed '1r/mnt/hello' fstab  ##将hello第一行内容写入 fstab
c 模式操作
sed '/^#/chello'  fstab   ##将#开头行替换成hello

在这里插入图片描述

i 模式操作
sed '/^UUID/ihello' fstab  ##在UUID 开头行前加入hello

在这里插入图片描述

a 操作模式
sed '/^UUID/ahello' fstab  ##在UUID开头行后加入hello

在这里插入图片描述

=

显示行号


sed -ne '/^UUID/=;/^UUID/p' fstab | sed 'N;s/\n//g'   ##=显示UUID行号 并显示UUID行内容
N 将模式空间内容整合并将换行替换

在这里插入图片描述

G
给行加入一空行
g 替换

给passwd文件每行加入行号

sed '='  -i passwd
sed 'N;s/\n/ /g' -i passwd

在这里插入图片描述

sed 's/nologin/bash/g' passwd   ##将nologin替换还曾bash

在这里插入图片描述

sed '1,5s/nologin/bash/g' passwd   ##将1到5行nologin替换成bash

在这里插入图片描述

sed '5s/nologin/bash/g;3s/nologin/bash/g' passwd   ##将第三行和第五行 nologin替换成bash

在这里插入图片描述

sed '/daemon/,/mail/s/nologin/bash/g' passwd  ##将daemon行到mail行 nologin替换成bash

在这里插入图片描述

sed 's/\// /g' passwd   ##将/替换成空格
sed 's@/@ @g' passwd   ##将/替换成空格

在这里插入图片描述

在这里插入图片描述

修改apache端口号
#!/bin/bash
[ -z "$1" ] &&{
        echo -e "\033[31mError: Please input port number for Apache Server\033[0m"
        exit
}

sed "/^Listen/cListen $1" -i /etc/httpd/conf/httpd.conf
systemctl restart httpd
echo -e "\033[32mPort has change to $1 \033[0m"

在这里插入图片描述

根据文件建立用户和密码
#!/bin/bash

Max_Line=`sed -n '$=' $1`

for i in $(seq 1  $Max_Line)
do
        USERNAME=`sed -n "${i}p" $1`
        PASSWORD=`sed -n "${i}p" $2`
        id $USERNAME &> /dev/null && {
                echo "$USERNAME is exist"
        }||{
                useradd $USERNAME
                echo $PASSWORD  | passwd --stdin $USERNAME &> /dev/null && echo $USERNAME CREATED

        }
done
awk 基本用法
awk '{print FILENAME}' passwd
awk '{print NR}' passwd   ##显示passwd有多少行
awk -F : '{print NF}' passwd  ##以:为分隔符显示多少列
awk -F : 'BEGIN{print "hello"}{print $1}END{print "end"}' passwd    ##开始时输出hello 输出每行第一列 结束时输出end
awk -F : '/bash$/' passwd    ##输出以bash为结尾的行
awk -F : '/bash$/{print $1}' passwd 	##输出以bash结尾的行的第一列
awk 'BEGIN{N=0}/bash$/{N++}END{print N}'  ##输出以bash为结尾的行数
awk '/^a|bash$/' passwd   ##输出以a开头或以bash结尾的行
awk -F : '$6~/bin$/' passwd  ##显示第六列以bin结尾的行
awk -F : '$6~/^/\home/&&/bash$/{print $1}' /etc/passwd		##显示有多少用户
ifconfig eth0 | awk '/inet\>/{print $2}' 显示ip
find
	-name	
	-maxdepth	##-maxdepth 2  最大深度小于2的
	-mindepth	##-mindepth 2  最小深度大于2的

	-not
	-user		##用户
	-group	##用户组
	-a		##且
	-o		##或

	-size 20k	##大小为20k
	-size -20k	##大小小于20k
	-size +20k	##大小大于20k

	-type

	-ctime 10    ##创建时间为10天
	-ctime -10	##小于10天
	-ctime +10	##大于10天
	-cmin +|-10	##大于或小于10分钟
	-cmin 10	##10分钟

	-perm /444  ##满足其中一个权限即可
	-perm 444	##权限为444的文件
	-perm -444	##都满足且权限可大于444
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值