- 论坛徽章:
- 0
|
正则表达式是一种模糊匹配和替换的工具.
ab aabb aaabbb这种规律无法用正则表达式匹配
c语言命名规则,用'^[A-Za-z_][A-Za-z0-9]*$'匹配
'\( o \| c \) d' 匹配od cd
字符类:
. 匹配任何单个字符,除换行符
[] 匹配[]内的任意字符
[[:xxx:]] 扩展字符类
数量限定类: 表示前面所修饰的项目(字符,字符类,小括号括起 \( \) 的单元 )的数量:
\? 匹配0次或1次
\+ 匹配一次或多次
* 匹配0次或多次
\{N\} 匹配N次
\{N, \} 匹配N次或更多
\{N, M\} 匹配N次-M次
位置限定类: 表示特殊的位置
$ 行末
^ 行首
\ 单词结尾
转义字符backslash: 将普通字符转成特殊操作符,或将特殊操作符转成普通字符,如\. \* \\
其他操作符: \( \) \| 对表达式起作用,而不是对目标串,如:\(ab\)\{9\}匹配连续出现9次ab的串
grep egrep增强型,很多字符不需要\转义了.
$egrep '[a-z]{9}' a.txt 查找具有连续9个小写字母的行
$grep '!$' a.txt 查找以!结尾的行
sed 'script' files 其中,files是一个或多个待处理的文件名; script是一段sed脚本, 由一条或多条sed命令组成, 每条命令的基本格式为 /pattern/ action, pattern是正则表达式, action如下:
action
功能
p
p打印当前行
d
d删除当前行
s/pattern1/pattern2/
s查找第一个匹配p1的串,替换为p2
/pattern/s/pattern1/pattern2/
s查找符合p的行,将该行第一个匹配p1的串替换为p2
s/pattern1/pattern2/g
s查找匹配p1的串,全部替换为p2
sed缺省是把待处理文件的内容与处理结果一同输出.只想输出处理结果,加-n选项;
如:$ sed -n '/abc/p' testfile $ sed 's/b/-&-/' testfile 把abc变成a-b-c (&表示匹配p1的字串)
$sed 's/\(a\)\(b\)/-\1-~\2~/' testfile \1表示第一个()匹配的内容,\2表示第二个()匹配的内容
sed能以行为单位对文件进行流处理,而awk除了以行为单位处理,还能以列为单位对文件进行处理;
awk 'script' files, 其中命令的基本格式是: /pattern/ {action}
$ awk '{print $2;}' testfile 自动变量$1,$2...分别表示第一列,第二列等,$0表示整行;
$ awk '$2=75 {print $0;}' testfile 可进行条件判断
$ awk '/^ *$/ { x=x+1;} END {print x;}' test 统计空行的数目,可以用变量.
普通的pattern每行都执行一次,BEGIN 和 END 只是开头和结尾的时候执行一次;
awk的内建变量:
FILENAME 当前输入文件的文件名,只读
NR 当前的行号,只读,record
NF 当前行拥有的列数,只读,field
OFS 输出格式的列分割符,缺省空格
FS 输入文件的列分割符,缺省空格和TAB
ORS 输出格式的行分割符,缺省换行符
RS 输入文件的行分割符,缺省换行符
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/53151/showart_417490.html |
|