SHELL学习笔记(2)

grep 使用POSIX定义的基本正则表达式
egrep 使用扩展的正则表达式
fgrap 优化的算法


-E --extended-regexp
-F --fixed-strings
-i ignore cases
-f Obtain patterns from FILE,one per line.
-v Invent the sense of matching,to select non-matchint lines

-l print the name of files


为了配合非英语的环境,POSIX标准强化其字符集范围的能力
POSIX字符集
[:alnum:]  digit
[:alpha:]  character
[:blank:]  spcae or tab
[:cntrl:]  control
[:digit:]  digit
[:graph:]  nonspace
[:lower:]  lower character
.....




ex
[ab[.ch.]de] 匹配 a or b or d or e or ch


后向引用
使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。
\(ab\)\(cd\)[def]*\2\1
第一步包括表达式在\(**\)  然后\digit


区间表达式
\{n\}
\{n,\}
\{n,m\}


文本匹配锚点
^$
如果有一串abcABCdefDEF
模式
ABC    YES
^ABC    no
def    yes
def$   no
[[:upper:]]\{3\}   yes
[[:upper:]]\{3\}$   yes
^[[:alpha:]]\{3\}   yes
 
ex
cc -E foo.c | grep -v '^$' >foo.out 预先删除空行


扩展正则表达式(好像就跟我上面摘录的差不多)
后向引用不存在啊




执行文本体会的正确次序应该是sed——流编辑器


基本用法:
sed 's/:.*//' /etc/passwd | sort -u


sed 's/\/home\/tolstoy\//\/home/\1t\//'


echo /home/tolstoy/ | sed 's;\(/home\)/tplstoy/;\t/lt/;'


mov altga.xml altga.xml.old
sed 's/Altlanta/&,the capital of the south/' <altga.xml.old > altga.xml


&表示从此点开始替代成匹配与正则表达式的整个文体


g表示替代全部匹配,没有则表示替代第一个,也可以控制替代第几个


-e表示有多个匹配


如果数据里有斜杠就考虑用冒号做定界符




匹配特定行
/oldfunc/ s/$/# xxx:migrate to newfunc/
s里空模式指使用前一个正则表达式


/Tolstoy/ s//& and Camus/g


sed -n '10,42p' foo.xml  打印10~42行
sde '/foo/,/bar/ s/baz/qunx/g'
逗号隔开的称为范围表达式


sed '/used/!s/new/used/g'






使用cut选定字段
cut -d : -f 1,5 /etc/passwd 取出域
ls -l | cut -c 1-10
ls -l | cut -d ' ' -f 3




join 连接字段
#!/bin/sh
#merge-sales.sh
sed '/^#/d' quotas | sort > quotas.sorted
sed '/^#/d' sales  | sort > sales.sorted


join quotas.sorted sales.sorted


rm quotas.sorted sales.sorted






使用awk重新编排字段
awk 'program' [file ...]
awk设计的重点就在字段与记录上;awk读取输入记录,然后自动将记录切分成字段。


awk -F: '{printf "User %s is really use $s",$1,$5}'  /etc/passwd


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值