1.shell的正则表达式:
举几个例子,方便大家理解:
grep “a*” test.txt
即匹配所有内容,包括空白行
grep “aa*” test.txt
即匹配至少包含有一个a的行
grep “s.*d” test.txt
匹配在s和d字母之间的任意字符
grep “^[^a-z]” test.txt
匹配不用小写字母开头的行
2.cut “切”命令
名字我自己取的,但是很形象,这是一个截取的命令
cut 选项 文件名 ( 不识别 空格 )
-f 列号 提取第几行
-d 分隔符 按指定分割符分割列
如: cut -d “:” -f 1 /etc/passwd
3.print命令
输出格式:
\a: 输出警告声音
\b: 输出退格键,也就是backspace键
\f: 清除屏幕
\n: 换行
\r: 回车,也就是enter键
\t: 水平输出退格键,也就是tab键
\v: 垂直输出退格键,也就是tab键
!多个输出类型时,要用单引号或者双引号括起来,才可以正常输出
!要在print输出命令,要用$()括起来
其实print/printf远不止此,笔者也正在学习
4.awk 符截取命令
awk ‘条件1 {动作1} 条件2 {动作2}……’ 文件名
条件可以加一些判断语句
美元符由于编辑时有问题,所以只能打文字
例子: df -h | awk ‘print 美元符1 “\t” 美元符3 ‘
上面这个例子中,美元符1美元符3是指截取第几字段,\t为制表符
BEGIN 命令 先执行
FS 内置变量 像cut -d一样,可提取分隔符
例子:awd ‘BEGIN {FS= “:”} {printf $2 “\t”} ’ 文件名
END 命令 后执行,和BEGIN一样,不一定放最后,位置不重要
5.sed 流编辑器
sed 选项 ‘动作’ 文件名
选项:
-n 只把sed处理的行输出
-e 允许对输出的数据应用多条sed命令编辑
-i 将sed修改结果直接修改文件(不推荐)
动作: ps. \ 是多行操作
a : 追加 sed ‘2a hello’ test.txt (2a 是第二行之后加的意思)
c : 行替换 sed ‘2c hello’ test.txt
i : 插入 sed ‘2i hello’ test.txt (2i 是第二行之前加的意思)
d 删除 sed ‘2,4d’ test.txt
p 打印 sed (-n) ‘2p’ test.txt
s 字符替换 格式: (数字)s/旧字串/新字串/g
sed -e ‘ s/test//g ; s/tset//g ’ test.txt
-e 为多条数据 s为全文执行,因为没写数字 //g替换为空
要是windows脚本移动到linux里,先用cat -A 文件名 ,看下是否为dos格式,若为dos格式,则用 dos2unix + 文件名 转换成linux格式,若是没有这个命令,就用yum装一下吧,当然了也有unix2dos
shell编程就算是基础,也是需要很多练习,而且小知识点更是多而杂,需要用心去学习
(责任编辑:IT) |