标签:cross 删除 == ++ test 文件 保存 egrep 编辑
正则表达式
正则表达式是用来处理字符串的,可以用一些特定字符来描述字符串里字符出现的规则,从而匹配,提取或者替换符合某一个规则的字符串。
通过特殊字符进行匹配一段字符串
正则表达式:
标准字符与元字符(特殊字符)构造
grep可以使用基础正则表达式,处理行
[]内为"或"只能出现一个
grep -n ‘sh[io]rt‘ test.txt //-n显示行号
[^w]
grep -n ‘[^w]oo‘ test.txt //匹配三个字母,不是woo就可以
grep -n ‘[^a-z]oo‘ test.txt //oo前不是小写字母
grep -n ‘[0-9]‘ test.txt //匹配单一数字
grep -n ‘^[^a-Z]‘ test.txt //不已a-Z开头的行
"."表示匹配一个任意字符
grep -n ‘w..d‘ a.txt
"":号前面的字符出现0次或多次
grep -n ‘abc*‘ a.txt //可以匹配 ab abc abcc abcc……
".*" :匹配任意长度任意字符
grep -n "w.*p" a.txt
{n}:大括号前字符出现n次 {n,m}:大括号前的字符出现n到m次 {n,}:至少出现n次
grep -n "o{2,5}" a.txt // "\"表示转义
扩展正则表达式
"+":+号前字符至少出现1次
egrep -n "wo+d" a.txt //匹配最小为 wod
"?":问号的字符出现一次或0次
egrep -n "bes?t" a.txt
"|":表示"或"
egrep "of|is|on" a.txt
():以|进行分割逐个匹配
egrep "t(a|e)st" a.txt
()+:括号内的一串字符出现一次或多次
egrep "A(xyz)+C" a.txt
sed文本编辑工具:在过滤的时候进行更改文件(常用于shell脚本)
-n 显示修改后的行
sed -n ‘3,5p‘ test.txt //3到5行 p打印出来
打印奇数行
nl test.txt | sed -n ‘p;n‘ //n下一行
打印偶数行
nl test.txt | sed -n ‘n;p‘
从第10行开始打印
nl test.txt | sed -n ‘10,${p;n}‘
打印包含the的行 正则表达式用//括起来
sed -n ‘/the/p‘ test.txt
从第四行开始打印包含the的行
sed -n ‘4,/the/p‘ test.txt
=表示打印行号
sed -n ‘/the/=‘ test.txt
以PI开头
sed -n ‘/^PI/p‘ test.txt
精确匹配一个单词
sed -n ‘/\<wood\>/p‘ test.txt
删除包含cross的行
nl test.txt | sed ‘/cross/d‘
删除以.结尾的行
sed ‘/.$/d‘ a.txt
替换
sed ‘s/the/THE/‘ a.txt
在每行的前面加入一个#号
sed -i ‘s/^/#/‘ b.txt
删除第三行的#号
sed -i ‘3s/#//‘ b.txt
剪切the行,粘贴到最后一行
sed ‘/the/{H;d};$G‘ a.txt //H 复制 G 粘贴
过滤并保存到abc.txt
sed ‘/the/w abc.txt‘ test.txt //w保存
追加abc.txt里的内容追加到每个the行的下面
sed ‘/the/r abc.txt‘ test.txt //r追加
awk文本编辑工具
sed逐行进程操作,awk可以基于段进行操作
以":"进行分割,打印第1段和第3段 逐行操作
awk -F ‘:‘ ‘{print $1 $3}‘ /etc/passwd //默认以空格进行分割
awk内建变量
FS:分割符,默认为空格
NF:正在操作的行分了几个字段
NR:当前操作的行号
$0:当前操作行的内容
$n:当前操作的是第几段
FILENAME:操作的文件名
RS:基于什么判断行数,\n回车换行
打印1~3行
awk ‘NR==1,NR==3{print}‘ test.txt
打印行号大于等于1小于等于3的行
awk ‘NR>=1&&NR<=3 {print}‘ test.txt
统计文件内以/bin/bash结尾的行
awk ‘BEGIN {x=0}; /\/bin\/bash$/{x++};END {print x}‘ /etc/passwd
感谢阅读
标签:cross 删除 == ++ test 文件 保存 egrep 编辑
原文地址:http://blog.51cto.com/13968682/2332291