第6天grep正则表达式 ,vim,shell概念

grep ,egrep ,fgrep
fgrep不支持正则表达式搜索 ,只支持普通字符串过滤
grep -E grep -F

grep是两个合在一起
grep root /etc/passwd
grep "$USER" /etc/passwd 可以过滤变量结果
grep ‘root‘ /etc/passwd 可以过滤字符串
grep whoami /etc/passwd 可以过滤命令结果
grep abc 寻找adc 包含abc字符串就显示 PATTEN字符串 也可以是文件
grep是包含字符串就全都匹配
grep -v “abc” 不包含abc字符串 只限于字符串的行
grep -i 忽略大小写
grep -n 加行号
jsdalkabcccc
[0-9]{1,3}.
grep -o 只限制模式本身字符串

先取出最后不是/的字符,由于贪婪模式所以能取到/etc/sysconfig/network-scripts 之后再挑选出
/etc/sysconfig/

echo "/etc/sysconfig/network-scripts/" |grep -o ".[^/]" |grep -o "^/./" 挑选出文件夹dirname

grep root /etc/passwd

grep 把标准输出按字符串处理
grep -c 有几行 只关心有几行而不是关系那些行
2
-o 只显示字符串本身

-q 静默模式 包含不包含都不显示,会有返回结果echo$? 非零没到到 0找到了
grep "root" /etc/passwd &> /dev/null

grep -nA3 root /etc/passwd 在符合条件后三行显示
[[email protected] network-scripts]#grep root -nA3 /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
4-adm:x:3:4:adm:/var/adm:/sbin/nologin

10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13-nobody:x:99:99:Nobody:/:/sbin/nologin

B是行前 C是前后行
用来搜索特定行 比如搜索一个位置之后想看这个位置附近信息

安装nmap 6.4
用来网络扫描 那些地址是开机 哪个地址不能访问

ip a 查看 ip地址

rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/nmap-6.40-16.el7.x86_64.rpm

用来网络扫描 那些地址是开机 哪个地址不能访问
nmap -v -sp 172.20.20.0/24 扫描网段
nmap -v -sP 172.18.140.0/24 |grep up -B1 >nmap.log
cat nmap.log |grep for |cut -d" " -f5
扫描

grep -e “root“ -e “bash“” 或者
grep -w abc 单词必须是adc
中间有空格 "x abc y" "-abc-y" ",abc,s" 不算单词

下划线和数字中间有数字算单词 “f2abc2f”“jdd_abc_ds”

通配符对的是文件名而正则表达式是文本里名字

grep -E egrep
grep -F fgrep
grep -f 文件 /etc/passwd 把文件中字符串 搜索到/etc/passwd

grep -E

匹配控制字符串
BRE 基本正则
ERE 扩展正则 grep -E

PCRE 正则表达式引擎 算法 perl语言 支持正则表达式则安装程序也需要
PCRE安装软件模块
man 7 regex

元字符分类 : 字符匹配,匹配次数,位置苗顶,分组

贪婪模式 尽可能匹配所有长度

.任意单一字符

\ 转意符 转化为字符本身

[] 一个字符 如果里头没有符号就不包含符号 区中括号的字符

匹配次数 某一个字符出现次数有几次
X 表示X X出现的次数不确定0次任意多次

.任意长度任意字符串
space 本身包括tab 和空格键
[[email protected] ~]#cat f1 |grep -v "^[[:space:]]
$"
123
345

grep过滤的是[a-z] a到z

[[email protected] ~]#echo "/etc/sysconfig/network-scripts" |grep -o ".[^/]\b"|grep -o "^./" \b代表单词结尾 \>

-bash: cdd: command not found
[[email protected] ~]# echo "a;cdd" | grep "a[.]\?c"
[[email protected] ~]# echo "a&cdd" | grep "a[.]\?c"
[[email protected] ~]# echo "a&cdd" | grep "a.\?c"
a&cdd
[[email protected] ~]# echo "a&cdd" | grep "a.\?c"
a&cdd
[[email protected] ~]# echo "a&cdd" | grep "a[.]\?c"
[[email protected] ~]# echo "a&cdd" | grep "a.\?c"
a&cdd
[[email protected] ~]#
[[email protected] ~]# echo "a>>cdd" | grep "a.\?c"
[[email protected] ~]# echo "a>cdd" | grep "a.\?c"
a>cdd
[[email protected] ~]# echo "a.cdd" | grep "a[.]\?c"
a.cdd
[[email protected] ~]# echo "a(cdd" | grep "a[.]\?c"
[[email protected] ~]# echo "a(cdd" | grep "a[(.]\?c"
a(cdd
\? 前一个字符1次或者0次 非贪婪模式 懒惰模式一旦匹配就不往下看

cat /etc/passwd | grep "^(.):./\1$"
[[email protected] ~]#cat /etc/passwd | grep "^(\<.\>).\1$"
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
bash:x:1009:1010::/home/bash:/bin/bash

[[email protected] ~]#grep "^(a|b)" /etc/passwd
[[email protected] ~]#grep "^a|^b" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
apps:x:1007:1008::/home/apps:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
bash:x:1009:1010::/home/bash:/bin/hahabash

[[email protected] ~]#grep "^s|^S" /proc/meminfo

[[email protected] ~]#grep "\<[0-9]{2,3}\>" /etc/passwd ]

[[email protected] ~]#grep "rpc" /etc/passwd |grep [^:]*$
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

(string1+(string2d)*) 括号匹配按从左向右字符

cat /etc/centos-release |grep -o " [0-9]+." |grep -o "[0-9]+"
[[email protected] ~]#cat /etc/centos-release |grep -o "[0-9]+" |head -n1
cat /etc/centos-release

[[email protected] ~]#echo "welcome to maedu linux"|grep -o "[a-z]" |sort -n|uniq -c|sort -nr

nano编辑功能只有下边注释的功能不是很强大

ctrl 加按键

vi适合批量处理文件
vim比vi多颜色,而且显示光标位置
vim针对配置文件加颜色
如果文件不存在用vim 会看出new边

vim +行号 /etc/passwd 快速编辑
vim +/^rpc /etc/passwd 快速切换以rpc开头行 PATTERN
空行算一段落

cp /etc/fstab f1
cp /etc/fstab f2
vim -b f1 f2 比较多个文件
有助于编辑修改文件
vim -m file 只读方式打开文件
normal命令模式 主要在于查看文件内容
h左
j下
k上
l右
查看文件内容
w 下个单词词首
e 下一个单词词尾
b 前一个单词词首
H 是页首
M页中
L页尾
0行首
$行尾
^非空字符首
G文件最后一行
10G10行
gg文件第一行
( 按句跳动 句子之前要有". " 点和" "空格算一句
) 按句跳动
{前段落
}后段落
x 删除剪切光标处1个字符
p 黏贴光标后
r替换光标中字母
R替换 切换replace模式
~转换大小写
J删除当前行换行符 非常有用
d 删除光标下一个位置的字符
d$ y复制同d
d^ c 删了并且切换插入,模式 同d
d0 u撤销多个
dw U撤销单行
de$ ctrl加r恢复最后一次操作
db .重复刚才操作
ndd
D等于d$
yy
p 黏贴下行
P 黏贴上行

0gu$ 变小写字母
0gU$ 变大写字母

10iwang esc 把wang黏贴100次
<start position>< command><end position>开始位置 命令 行尾位置

gU变大写 gu变小写
****重点 命令模式看不到输入键所以谨慎一点

insert 从命令模式切换
i光标前
a光标后
o下单行
I行首
A行尾
O上单行

extended command 扩展的命令模式
:wq
:q q代表看了看没有改
: wq!
:q!
:w another 另存为新文件
:r f1 把f1文件放进vi里
;!hostname 直接在vi敲命令 然后在vi下不用退出可以直接看
:r!hostname 直接把命令放到vim里
:#,# :2,5 行号

:2,5d 删除2,5 或者2,+3d
:. 表示当前行
:$ 表示最后一行
:%表示全文文件
:/pat1/,/pat2/ 2个正则表达式定位
扩展vim:模式
.表示当前行
$表示最后一行
%全文相当于1,$
vim加颜色和文件有关 /etc 下是配置文件有颜色 ,而data则无颜色
:/pat1/,/pat2/
第一次被pat1模式匹配到行开始到,一直到part2结束 ,
pat正则表达式模式
:w file 将范围内的行另存至指定文件中
: r file 在指定位置插入指定文件中所有内容

查找并替换
s/要查找的内容/替换内容/修饰符
:1,10s/bash/csh/ 1到10行csh替代bash 只替代行一个

:1,10s/bash/csh/g 1到10行csh替代bash g全局替换也就是全部

修饰符
gc全局替换,=每次都提前询问
i 忽略大小写

@可以作为分隔符 #也可以做分隔符
cp /etc/fstab /root/f2

vim /f2 用&代替 br/>:%[email protected]^[^#]@#@g
:%s/(haha)/\1er haha替换hahae
:%s/^UUID/#&/ 前边搜索的字符串 用&代替
:%[email protected]^[[:space:]]{1,}.*@@g

查找字符串
/PATTERN
?PATTERM
N
n

ctrl加v [ 就是 \e 进入insert模式操作

echo -e "\e[31mred\e[0m"
^[[31mred^[[0m
\e \e

grep “^a”
句子之前要有". " 点空格算一句
( 上一句
)下一句

crontab -e 计划任务

扩展正则表达式

搜索
/pattrn 光标所处文件尾部查找

?pattern 光标所处文件首部查找

n 与命令同方向

N 与命令反方向

u撤销
U撤销回到最早状态 必须在行没有离开

.重复刚才操作

命令模式
vim有26个寄存器,也就是剪切板 abcd...z 26个字母 字母寄存器可以共享
3”tyy 把3行放到寄存器t
‘’tp 就是粘贴t寄存器内容
10个数字寄存器,用0,1 ,2...9 0存放最近复制内容1存放最近删除内容
寄存器不能再不同回话共享

2进制修改 vim编辑
dd if=/dev/zero of=f1 bs=1 count=3
hexdump -c f1
vim -b f1
:%!xxd 进入2进制模式
:%!xxd -r 退出

v进入可视化模式 v就是按光标位置可视化 VISUAL 模式
V进入可视化模式 按行来显示
ctrl 加v 按矩形方式显示

vim FILE1 FILE2 FILE3 多文件模式

:next 下一个
:prev 前一个
:first 第一个
:last 最后一个
:wall 保存所有
:wqall 退出所有

vim -o f1 f2 水平分割
vim -O f1 f2
ctrl加w 加下
ctrl加w s 给一个文件分屏(上下)
ctrl加w v 给一个文件分屏(左右)
:set nu 加行号
:set nonu 取消行号

~/.vimrc 放到用户家目录

set ic 忽略大小写
set noic 不忽略大小写

set ai 启用行对其 缩进
set noai 取消缩进
set si 智能缩进
set nosi 取消智能缩进

set hlsearch 高亮搜索
set nohlsearch 禁用

syntax on 启动语法高亮 /etc/passwd 有语法高亮
syntax off 取消语法盖亮

:set list 显示tab 换行符 ^I 和$ 显示

:set nolist

:set fileformat=dos 开启windows格式
unix
:set ff=dos|unix 简写windows或者unix格式

:set cursorline 设置光标所在行标识线set cul 简写

:set paste 保留复制的格式

:set all 看一下set 支持格式

:help 查看帮助

vimtutor 命令 这个帮助手册可以随便删除br/>:%[email protected]/etc/sysconfig/[email protected]/var/[email protected]
:%[email protected]^#([[:space:]]{1,})@\[email protected]

shell脚本编程

指令+数据

过程试 以指令为中心,关注过程 ,数据服务指令

对象式 以数据为中心,关注对象 指令服务数据,
只关注每个块的负责人,每块的负责人负责每块的

java, python gogo 面向对象

编译: 高级语言-->编译器-->目标代码
编译器程序员手工完成 ,由高级语言转换成二进制语言
.java

高级语言 --->解释器 ----> 机器代码
解释器直接转换为二进制,如shell

shell脚本就是命令集合

顺序执行 预先的排序
循环 不断地执行某个代码 着个处理
选择执行 根据状态做什么事情 选择条件判断

shell编程:过程式, 解释执行

头脑清晰关注过程,写好shell直接运行shell缺点不安全
高级语言文本,编译二进制,之后目标代码安全

shell基本结构 多个命令组合

变量、数组
表达式 a+b
语句if

shell 一般加 .sh 后缀
一般运行shell脚本 只要输入绝对路径或者相对路径 前提是拥有x权限
如果程序想要运行
1种方法给$PATH 变量加路径如/data /data下文件可以执行2进制
2把程序放到PATH变量路径中

#!/bin/bash 首行shebang机制 首行标注语法写出程序路径
#!/bin/csh

要在文本里首行加入

#!/bin/bash

shell脚本用途
自动化常用命令,
执行系统管理和故障排除
创建简单的应用程序
处理文本或文件
不适合负杂问题处理

bash hello.sh 没有执行权限也可以运行

cat hello.sh | bash 非常有用

ss -ntl 看端口启没启动

curl http://192.168.30.128/hello.sh | bash 在别的远程服务器执行shell脚本
把远程的文件在主机上执行

脚本代码开头约定
1.第一行一般为调用使用的语言
2.程序名, 一般和功能息息相关,最好不建议汉字,能用英文最好用英文
3 版本号
4更改后的时间
5作者相关信息
6改程序的作用,以及注意事项
7最后各版本更新简要说明

原文地址:https://blog.51cto.com/14230597/2388134

时间: 2024-10-19 02:58:22

第6天grep正则表达式 ,vim,shell概念的相关文章

grep 正则表达式 vim

一:umask: 当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情.umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限"补码",而chmod设置的是文件权限码.一般可在/etc/profile./etc/bashrc.$ [HOME]/.bash_profile.$[HOME]/.profile或$[HOME]/.bashrc中设置umask值.具体取决于Linux发行版. 修改方式为:u

grep正则表达式原理介绍及应用实例

应用背景:我们刚刚添加了一个用户Luffy,但是不知道他的默认shell是什么. 问题:如何取出一个用户的默认shell? 解决方法: #grep '^Luffy\>' /etc/passwd | cut -d: -f7 /bin/bashf 通过上面的方法,我们就得到了Luffy这个用户的默认shell 文本搜索工具:就是要根据用户指定的文本模式,逐行的进行匹配,最终得到符合文本模式的行 grep是一个强大的文本搜索工具,下面我们就介绍一下grep的语法: grep [OPTIONS] PAT

linux基础正则表达式、shell基础、文件查找和压缩

linux基础正则表达式.shell基础.文件查找和压缩 1.shell编程显示电脑的基本信息,初级基础脚本.只适合6.7版本的. COLOR="\033[1;36m" COLOREND="\033[0m" echo -e "CPU type is $COLOR `lscpu |grep 'Model name'|tr -s ' '|cut -d: -f2`$COLOREND" echo -e "Disk space is $COLOR

文本处理工具和正则表达式、shell脚本编程基础-第四周

第四周-文本处理工具和正则表达式.shell脚本编程基础1. 统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户的个数,并将用户都显示出来grep -v '/sbin/nologin' /etc/passwd|wc -lgrep -v '/sbin/nologin' /etc/passwd|cut -d: -f12. 查出用户UID最大值的用户名,UID及shell类型.cut -d: -f1,3,7 /etc/passwd|sort -t: -k2 -nr

linux入门之grep 正则表达式案例

grep 正则表达式案例 案例一: 1.显示/proc/meminfo文件中以大小s开头的行:(要求:使用两种方式) #grep -i '^s' /proc/meminfo #grep  '^[Ss]' /proc/meminfo #grep -E '^(s|S)' /proc/meinfo 2.显示/etc/passwd文件中不以/bin/bash结尾的行 #grep -v '/bin/bash$' /etc/passwd 3.显示用户rpc默认的shell程序 #grep '^\<rpc\>

grep正则表达式与grep用法详解

功能:输入文件的每一行中查找字符串. 基本用法: grep [-acinv] [--color=auto] [-A n] [-B n] '搜寻字符串' 文件名 参数说明: -a:将二进制文档以文本方式处理-c:显示匹配次数-i:忽略大小写差异-n:在行首显示行号-A:After的意思,显示匹配字符串后n行的数据-B:before的意思,显示匹配字符串前n行的数据-v:显示没有匹配行-A:After的意思,显示匹配部分之后n行-B:before的意思,显示匹配部分之前n行 --color:以特定颜

grep正则表达式详解及练习

grep正则表达式详解及练习 一.在学习grep正则表达式前,先了解下linux著名的文本处理三剑客: (1)grep.egrep.fgrep 文本搜索工具. (2)sed     文本编辑工具,一种流编辑器,行编辑工具. (3)awk 强大的文本分析工具,文本格式化工具,文本报告生成器. 以上三大命令均支持正则表达式,本文以grep正则表达式为例展开学习. 1.什么是正则表达式? 正则表达式(Regular Expression):由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意

linux 命令grep正则表达式

Linux 命令grep正则表达式 在linux里面有处理文本的三剑,现在我要说的就是grep正则表达式的使用,正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串.vi grep ,awk ,sed 等都支持正则表达式..正则表达式有基本正则表达式和扩展正则表达式. grep默认就是基本表达式. 基本正则表达式: 默认匹配次数:贪婪模式,尽可能多的去匹配. 扩展正则表达式:基于基本正则表达式多加了一些功能,基本一样. 1. grep命令 grep [参数]

awk &nbsp; sed &nbsp; grep &nbsp; &nbsp; 正则表达式

做事要有耐心. 虚心接受建议,你确实有很多缺点. 就算进步慢,也不可以停止前进的脚步. AWK awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有三种不同版本: awk   gawk    nawk 1.使用方法 awk '{pattern + action}' {filenames} 其中 pattern 表示 AWK 在数