shell中正则表达式和通配符【linux上实际操作是什么情况,就是什么情况,理论只是猜测,试验结果大于一切】
通配符一般是用于匹配符合条件的文件名(例如:ls fei*hai),而正则表达式则一般是用于在文件中匹配符合条件的字符串。
通配符是完全匹配,而正则表达式则是包含匹配。例如命令find . -name "abc?"找到的文件都是以abc开头的4字母长度的文件,而命令grep "size" canvas.conf找到的则是所有含有size的字符串。包含匹配:只要行内存在匹配成功的,该行整个就会被选中。
正则表达式又分基础正则表达式和扩展正则表达式
基础正则表达式:元字符 * . ^ $ [] [^] \ \{n\} \{n,\} \{n,m\}
命令grep "aa*" test.txt是匹配包含一个a,且其后跟0个或任意多个a的字符串。星号前面的a是用于指明可能出现重复的字符。
元字符只能匹配一个字符,命令grep ".*" test.txt是匹配所有字符。"a\{n\}":转义字符(\)使大括号({和})仅仅代表大括号,n为数字,例如:"a\{8\}"表示的意义是匹配a字母连续出现8次的字符串;"[0-9]\{5\}"表示匹配包含5个连续数字的字符串;"a\{8,\}"表示的意义是匹配a字母连续出现8次以上的字符串;"a\{8,10\}"表示的意义是匹配a字母连续出现8到10次的字符串。
扩展正则:元字符 ? ()
字符截取命令:cut命令,awk命令,sed命令【小提示:能用制表符就别用空格】
cut截取:使用cut命令时默认使用的切割符是制表符;如果人为指定空格为切割符且在空格分布不均匀的情况下,可能会切割不准确。cut -d -f
awk截取:该命令甚至支持在其中进行逻辑处理(if,while判断,函数调用...),实现流程控制。支持print和printf. 命令格式:awk '条件1{动作1}条件2{动作2}...';其中条件一般使用关系表达式作为条件(x>10,x>=10,x<=10);动作可以使格式化输出(print,printf),流程控制语句(if, while,函数调用...);例如:awk '{printf $1 "\t"}' test.txt;命令详解:读取test.txt文件中的一行,判断条件执行动作,处理完所有的行后才进行下一步动作,文件无论是在处理前还是在处理后,始终都是作为一个整体而存在,在awk外无法获取文件的某一行,在awk命令的内部才能获取文件的某一行。 条件可以是:BEGIN(这个条件比较重要在进行数据处理之前就执行BEGIN后的动作,例如命令:cat /etc/passwd | grep /bin/bash | awk '{FS=":"}{printf $1 "\t" $3}' 输出的第一行就不是按照格式化的要求输出,因为awk的原理是先读入数据在执行指明的动作,此时将分割符指定为冒号为时以晚,如果改用awk 'BIGIN{FS=":"}{printf $1 "\t" $3}则在读入之前就现执行动作FS=":",此时第一行就不会存在格式错误了。
printf:格式化输出,无论输出啥都要事前规定输出格式。不支持数据流格式,即命令cat test.txt | printf会报错。 命令格式:printf '输出格式' 输出内容;如果输出内容中存在\t,\n等等字符,需要用单引号将这些字符括起来,当在awk中由于最外面有单引号,所以这个时候这些字符就必须用双引号括起来。
sed截取(严格上讲sed属于字符替换[一般意义上的替换,删除,修改,增加]命令)。命令格式:sed 选项 '动作' 文件名;选项有-n -i -e;动作有:a,c,i,p,s。在动作前面可以加指定的行号,例如命令sed -n '2,4d' test.txt表示删除test.txt文件中第2到第4行的内容。【sed命令和vi有很多相似之处,vi是用于人机交互,而sed是用于脚本shell】
字符处理命令:sort命令,wc命令
排序命令sort:命令格式:sort 选项 文件名;选项有-f,-n,-r,-t,-k n[,m]。默认的分割符是制表符。
统计命令wc:命令格式:wc 选项 文件名;选项有-i,-w,-m。
相关文章
- Linux学习 -- Shell编程 -- 字符处理命令
- Linux学习——shell编程之正则表达式和字符处理命令
- Shell命令-文件及内容处理之grep(egrep)、join
- 第10章 Shell编程(2)_字符截取命令
- centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/index.php <
- shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。
- 《Javascript权威指南》学习笔记之十一:处理字符串---String类和正则表达式
- Shell正则表达式 & Grep正则表达式 & shell字符串处理
- 字符串处理 正则表达式中特殊字符处理
- 第10章 Shell编程(3)_字符处理命令和条件判断