时间:2021-11-25来源:www.pcxitongcheng.com作者:电脑系统城
文本搜索工具,可以使用正则表达式搜索文本,把匹配的行打印出来
grep -E
= egrep
grep 匹配条件 处理文
-i | 忽略大小写 |
-E “\<root" | root字符之前不能有字符 |
-E ”root\>“ | root字符之后不能有字符 |
-数字 | 显示过滤行以及上面几行和下面几行 |
-n | 显示匹配的行所在行号 |
-A | 显示过滤行以及下面几行 |
-B | 显示过滤行以及上面几行 |
-v | 反向过滤 |
建立实验素材:
1 2 3 |
grep -E "bash$|nologin$" passwd ##过滤以bash结尾或nologin结尾的行 grep -i root passwd ##过滤含root关键字的行,不分大小写 grep -iE "\<root\>" passwd ##过滤root关键字前后都没有字符的行,不分大小写 |
1 2 3 |
grep -1 ROOT passwd ##显示含root的行,以及上下各一行 grep -A 2 -B 1 -n ROOT passwd ##显示含root的行,以及上1行,下2行,均显示行号 grep root passwd | grep -E "^root" - v ##显示root在结尾或中间的行,即反向过滤root在开头 |
^root | 以root开头 |
root$ | 以root结尾 |
s...k | s开头k结尾中间任意3个字符 |
....k | k结尾前后4个任意字符 |
* | 字符出现任意 |
? | 0到1次 |
+ | 1到任意次 |
{n} | n次 |
{m,n} | m到n次 |
{0,n} | 0-n次 |
{,n} | 0-n次 |
{m,} | 最少m次 |
(skk){6} | skk字符串出现6次 |
建立实验素材:
1 2 3 |
grep -E 's.{2,4}s' grepfile ##s和s之间有2到4个任意字符 grep -E 's.?s' grepfile ##s和s之间有0到1个任意字符 grep -E 's(ks){2,}' grepfile ##s后面ks字符串最少出现2次 |
请显示系统中能被su命令切换的用户名称
能被su切换,则必须以/bin/bash
或/bin/sh
结尾
1 | grep -E "/bin/bash$|/bin/sh$" /etc/passwd | cut -d : -f 1 |
sed 参数 命令 处理对象
-e
:当给出多个sed指令时使用-f
:后面跟保存了sed指令的文件-i
:直接对内容修改,不加-i
时默认为预览,不对文件做实际修改-n
:取消静默输出,sed默认会输出所有文本内容,使用-n
后只显示处理过的行
建立实验素材:
p:显示
-n 5p | 显示第5行 |
-n 3,5p | 显示3到5行 |
-n ”3p;5p“ | 显示3和5行 |
-ne 1,5p | 显示1-5行 |
-ne '5,$p' | 显示5到最后行 |
-n '/^#/p' | 显示以#开头的行 |
d:删除
5d | 删除第五行 |
'/^#/d' | 把#开头的行删除 |
'/^UUID/!d' | 除了UUID开头以外的行都删除 |
-e '5,$d' | 删除5到最后一行 |
a:添加,c:替换
-e '$a hello world' | 最后一行后添加 |
-e '5a hello\nworld' | 第5行后添加换行的内容 |
-e '/^#/a hello world' | 在以#开头的行后面添加 |
-e '/^#/c hello world' | 替换以#开头的行 |
'5chello world' | 替换第5行 |
w:把符合的行写到指定文件中,i:插入,r:整合文件
'/^root/w linuxfile' | 把文件中root开头的行写入linuxfile中 |
'5ihello linux' | 第5行前插入内容 |
'5r haha' | 把haha文件的内容整合到第5行之后 |
建立实验素材:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
sed '=' passwd ##每一行前面加行号 sed '=' passwd | sed 'N;s/\n/ /g' ##将换行符转换为空格(sed是逐行检测的,加入N提前加载处理下一行) sed 'G' passwd ##每行后面都加一个空行 sed '$G' passwd ##给最后一行后加空行 sed '$!G' passwd ##除了最后一行在后面都加空行 sed 's/:/#/g' passwd ##将全文的:替换为#,s全文,g每行的全部 sed 's/:/#/' passwd ##只替换每行的第一个 sed '1s/:/%%%/g' passwd ##第一行替换 sed '1,5s/:/%%%/g' passwd ##替换1到5行 sed '1s/:/%%%/g;5s/:/%%%/g' passwd ##替换第1行和第5行 sed '/mail/,/ftp/s/:/%%%/g' passwd ##指定字符间替换 sed 's/\//%%%/g' passwd ##替换全文的"/","\"为转义字符 sed 's@/@%%%@g' ##也可以使用“@”代替“/” |
编写Apache_port.sh
,此脚本后接数字,http
的端口就改为此数字,假设selinux
为关闭状态
例如:
sh Apache_port.sh
ERROR: Pleaase input port number following script !!
sh Apache_port.sh 8080
apache的端口会被修改为8080,在其他主机可以访问到测试页面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
vim Apache_port.sh #!/bin/bash yum install httpd -y &> /dev/null systemctl enable --now httpd &> /dev/null echo "hello linux" > /var/www/html/index .html systemctl enable --now firewalld &> /dev/null [ -z $1 ] && { echo "ERROR: Pleaase input port number following script !!" exit } [ -z "`netstat -antlupe | grep -E " :$1\> "`" ] || { echo "Error: $1 is using !!!" exit } sed "/^Listen/c Listen $1" -i /etc/httpd/conf/httpd .conf systemctl restart httpd firewall-cmd --permanent --add-service=http &> /dev/null firewall-cmd --reload &> /dev/null echo "Change $1 sucessful!!" |
awk -F 分隔符 BEGIN{}{}END{} FILENAME
NR | 行数 |
NF | 列数 |
FILENAME | 文件名称本身 |
linux | linux变量值 |
“linux” | linux字符串 |
/bash$/ | 条件 |
/条件1|条件2/ | 条件1或者条件2 |
/条件1/||/条件2/ | 条件1或者条件2 |
/条件1/&&/条件2/ | 条件1并且条件2 |
$0 | 所有的列 |
$1 | 第1列 |
$2 | 第2列 |
$3 | 第3列 |
建立实验素材:
1、在passwd
文件开始加上hello
,结尾加上end
,打印第一列
1 | awk -F : 'BEGIN{print "hello"}{print $1}END{print "end"}' passwd |
2、统计文件行数,显示以bash
结尾的第一列
1 2 |
awk -F : 'BEGIN{N=0}{N++}END{print N}' passwd0 awk -F : '/bash$/{print $1}' passwd |
3、第六列没有root
关键字并且以bash
结尾的行,显示第一列
1 | awk -F : '$6!~/root/&&/bash$/{print $1}' passwd |
统计在系统中能su
切换的并且用户家目录不在/home
下的用户数量
(1)方法一
1 | awk -F : '$6!~/^\/home/&&/bash$/{print $1}' /etc/passwd | wc -l |
(2)方法二
1 | awk -F : 'BEGIN{N=0}$6!~/^\/home/&&/bash$|sh$/{N++}END{print N}' /etc/passwd |
以上就是Linux运维shell文本处理工具grep sed swk操作示例的详细内容
2024-07-18
Centos 7 二进制安装配置 MariaDB数据库2024-07-18
Centos7默认firewalld防火墙使用命令大全2024-07-07
四种执行python系统命令的方法常用权限linux系统内有档案有三种身份 u:拥有者 g:群组 o:其他人这些身份对于文档常用的有下面权限:r:读权限,用户可以读取文档的内容,如用cat,more查看w:写权限,用户可以编辑文档x...
2024-07-07
然而,如果我们遵循通常的 WordPress 最佳实践,这些安全问题可以避免。在本篇中,我们会向你展示如何使用 WPSeku,一个 Linux 中的 WordPress 漏洞扫描器,它可以被用来找出你安装...
2024-07-03