文本处理三剑客
grep:grep,egrep,fgrep
pattern:模式,类型
sed
awk
通用技术:正则表达式
blank和space的区别:
`[:blank:]' Blank characters: space and tab. [:space:]' Space characters: in theC' locale, this is tab, newline, vertical tab, form feed, carriage return, and space.
grep
grep -q 不做任何显示,但会有一个返回的结果,叫$? grep -nA3 root /etc/passwd root后面的后3行 grep -nB3 root /etc/passwd grep -nC3 root /etc/passwd 既包含前3行,也包含后3行 _不算单词的分隔符,-算单词的分隔符
Perl非常擅长做正则表达式
元字符分类:字符匹配,匹配次数,位置锚定,分组
man 7 regex
echo abc | grep a.c //.表示一个字符
转义:加转义符之后,表示字符原来的含义
echo abcdef | grep "a" echo abcdef | grep "a[xyz]c"
x*表示 *前面的x出现的次数是不确定的
.*表示任意长度的任意字符串
遇到正则表达式写法最好加上双引号
*贪婪
+贪婪
\?懒惰模式
在[]里面写.表示.本身,不需要转义符
不懂!
[a-z.]
正则表达式匹配IP地址
[0-9]\{1,3\}.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}
在学习的时候,方法是不断更新和改进的
查看硬盘的利用率
df | grep "/dev/sd" | grep -o "[0-9]\{1,3\}%" | grep -o "[0-9]"
行首^,写在最前
行尾$,写在最后
查看非注释与非空行
grep -v "^#" /etc/fstab | grep -v "^$"
过滤空行 grep -v "^[[:space:]]*$" f1
以root为单词词首开始的行
grep "\<root" /etc/passwd // 注意 \<
以root为单词词尾结束的行
grep "root\>" /etc/passwd
包含以root为单词的行
grep "\<root\>" /etc/passwd grep -w "root" /etc/passwd
包含wang三次
echo wangwangwang | grep "\(wang\)\{3\}"
做计算机的最忌讳的是重复
分组是重点!
搜寻头尾相同 grep "^\(.*\):.*/\1$" /etc/passwd
取centos的版本数字
cat /etc/centos-release | grep -o "[[:digit:]].*[[:digit:]]\>"
取文件或者文件夹的基名
echo /etc/rc.d/init.d/ | egrep -o "[^/]*/?$"
sed一般适合大量文件
vi/vim
vim是基于模式的,有ex模式,有insert模式,还有普通/一般模式
:r 将其他文件的输出追加到当前文件夹
点加空格表示一句
(上一句
)下一句
空行算一个段落
{上一段
}下一段
x–>p 实现了两个字母的对调位置
J删除当前行后的换行符
dG 删除光标之后的所有内容
26个寄存器(a-z)
Shell编程
程序:指令+数据
程序编程风格:
过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 大工程一般是面向对象的
shell程序:提供了编程能力,解释执行
python,java,go
低级:汇编
高级:编译:高级语言–>编译器–》目标代码(Java,C#
解释:高级语言–》解释器–》机器代码(Shell,perl,python
shell脚本就是命令的集合,按照自己的次序写出来
编程逻辑处理方式:
1.顺序执行
2.循环执行
3.选择执行
shell编程:过程式,解释执行
编程语言的基本结构:
各种系统命令的组合
数据存储:变量,数组
表达式:a+b
语句:if
shell编程相对而言不是很安全,如果给用户用,用户只能使用二进制
给用户用,编译性的语言更加安全
shell,perl,python都是源码,都是文本
shell:各种系统命令的组合
数据存储:变量,数组
不同shell的语法是不同的
shebang机制:sharp+bang
自动化运维使用shell,建议写成shell脚本
加bash的时候,即使这个文件没有可执行权限,依然能够通过bash命令执行
cat hello.sh | bash bash hello.sh
curl http://192.168.30.128/hello.sh
把一个脚本放在很多人都能够访问的主机上,那么这个程序就能够很容易地被很多人调用
脚本代码开头约定:
1.第一行shebang,即使打字也不要使用汉字
2.程序名,避免更改文件名为无法找到正确的shell
3.版本号
4.更改后的时间
…………..
附加知识点:
SUID,SGID,STICKY和token有联系
ACL可能和token没有联系
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95534