现在的位置: 首页 > 综合 > 正文

正则表达式(小记)

2014年09月15日 ⁄ 综合 ⁄ 共 1768字 ⁄ 字号 评论关闭

    很多东西看的时候,很有感觉,可是不幸的是过些时日便忘的一光二净了。而且很杯具的是,再此来翻查时,还查了贼久滴。故此,帖着吧。
1)什么是正则表达式? 个人理解就是利用一些程序工具(grep,egrep,awk,sed)来处理字符串的方法。
    引用鸟哥经典的总结:正则表达式就是处理字符串的方法,以行为单位进行处理的,通过一些特殊符号的辅助,可以让用户轻松搜索/替换某些特定的字符串。例如:windows下的记事本,word,或者浏览器中,Ctrl+F 弹出来的那个对话框供我们搜索或替换的,使用的就是正则表达式。
2)正则表达式并不是程序工具,而是一个字符串处理的标准依据,这点是应该明确的,而最近在学的vi,sed,awk,grep,egrep(拓展的grep)正是实现正则表达式的程序工具。
3)工具一:grep
语法:[root@biao root]#grep [-acinv] '搜索字符串' filename
 注意:grep支持基础正则表达式,而egrep支持拓展正则表达式。
4)格式化显示:print
 awk及C中都使用的屏幕输出语句。java支持的是printf!
5)工具二:sed
 功能:替换/删除/新增/选取特定行。
 语法: sed [-nefr] [动作]
6)工具三:awk
  与sed常常作用于整行处理相比,awk比较倾向于一行中分成数个“字段”来处理,因此,awk适合处理小型的数据。
  语法:awk '条件类型 {动作}  条件类型2 {动作2}....' filename

用last可以将登录者的数据取出来,结果如下:(一部分)
[root@biao LinuxTest]# last
root     pts/1        :0.0             Sat Apr  3 18:38 - 18:38  (00:00)   
root     pts/1        :0.0             Sat Apr  3 17:04 - 17:04  (00:00)   
root     pts/1        :0.0             Sat Apr  3 16:27 - 16:27  (00:00)   
abiao    tty7         :1               Sat Apr  3 15:07   still logged in  
root     pts/1        :0.0             Sat Apr  3 14:05 - 14:05  (00:00)   
root     pts/1        :0.0             Sat Apr  3 14:05 - 14:05  (00:00)   
root     pts/1        :0.0             Sat Apr  3 14:05 - 14:05  (00:00)   
root     pts/1        :0.0             Sat Apr  3 11:42 - 13:45  (02:02)   
root     pts/1        :0.0             Sat Apr  3 11:36 - 11:36  (00:00)   
root     pts/0        :0.0             Sat Apr  3 10:45   still logged in  
root     tty1         :0               Sat Apr  3 10:42   still logged in  
reboot   system boot  2.6.31.5-127.fc1 Sat Apr  3 10:40 - 20:05  (09:25)   

/反斜杠在此处,表示换行输入。
[root@biao LinuxTest]# cat /etc/passwd|/
> awk '{FS=":"} $3<10 {print $1 "/t" $3}'
root:x:0:0:root:/root:/bin/bash   
bin    1
daemon    2
..........(省略)

因为不同的语系编码是不一样的,所以,必须将语系改成英文语系,才能进行测试,否则可能会出现显示的内容与输出不符的情况。修改语系的方法如下:
#LANG=EN
#export LANG

大可以使用cat -A  filemane 来查看是否有windows记事本或word 带过来的^M(换行符).

抱歉!评论已关闭.