cut命令
cut -d '分隔符' -f1:表示使用指定的分隔符将内容分割,并取走分割的第一块内容
cut -d '分隔符' -f1,2,3 :表示取出分隔符分完后的1,2,3列
cut -c1-2:表示只取走内容的第1个到第2个的字符
cut -c-2:表示只提取前2个字符
cut -c5-:表示只提取结尾的5个字符
正则表达式
反斜杆“\”:可以对具有特殊含义的字符进行转义,比如点号“.”
字符匹配元字符主要包括:点号".",方括号"[ ]"
点号:点号可以代替任意单个字符,相当于通配符中的“?”
方括号:其功能与通配符中的方括号一致,[a-z]代表a到z中的任意一个字符,[A-Z]代表A到Z的任意一个字符,[a-zA-Z0-9]代表任意字符,同时还具有使用“!”或者“^”去代表非逻辑,比如[!a-z]代表除了a-z其他的字符。方括号最好于大括号{}一起使用,使用方括号指定字符的类型,使用大括号去指定字符的个数。
^a字符:在a字符前面加上“^”字符,则表示找出以a字符开头的内容,其他以此类推
例子:grep "^[Aa]" /etc/passwd
找出/etc/passwd 文件中以A或a开头的内容
$字符:在字符的尾部加上美元符号,代表查找以美元字符前的字符串结尾的内容。
例子:root$
该例子代表查找以root结尾的内容
星号*:星号代表匹配前面的字符X次,这个次数是0到无穷
例子:x*y,这个正则表达式就代表匹配以y结尾的内容,同时y前面出现0次或者任意次x的内容
因为x的次数可以为0,也可以是无穷次,所以即便y的前面没有出现x,也是符合标准的,而出现x也是符合标准的。我们一般将星号与"."点号相结合,比如我们可以用正则表达式去表示通配符中的星号*,也就是任意数量的字符。“.*”,因为点号可以代表任意字符,而星号又代表前面的字符为任意个,所以由此达成与通配符中“*”星号的效果。
问号?:代表匹配前面的字符1次或者0次,但是?在正则表达式中有特殊的作用,所以我们需要将使用问号的时候,需要在前面加上反斜杆用作转义“\”,
例子:r./?./?t
因为问号的功能是匹配前面的字符0到1次,且上述例子中问号前面的字符都是点好,也就是任意单个字符,所以这个例子代表查找,字符个数在4个到2个之间,且开头字符为r,结尾字符为t的内容。
加号+:加号代表前面的字符至少匹配一次,同时它的使用必须加上反斜杆"\"
例子:r\+t
这个例子就代表匹配t前面出现至少一次r的内容,可以是rt,rrt,或者rrrt,但是不可能只出现一个t。
{}大括号:大括号的两个括号都需要使用反斜杆“\”转义,同时在大括号里面加入想要匹配的次数,如\{5\},这个就代表匹配5次,同时还可以输入\{m,n\},代表至少m次,至多n次。\{m,\}这个代表至少m次,至多不限制,\{,n\}这个代表至少不限,至多n次。
例子1:ro\{2\}t
因为大括号的前面出现的字符是o,且大括号里面的数字是2,代表匹配两次,所以这个例子就代表查找root的相关内容。
例子2:ro\{1,2\}t
因为里面输入的形式是\{m,n\},所以该例就代表查找rot或者root的内容。
小括号():如果我们想要去指定某个字符串出现的次数,就需要用()将其包括,但是使用小括号的时候也需要使用反斜杠进行转义。
例子\(ro\)\{2\}
这个就代表查找roro的内容。
\w 匹配数字字母下划线(小写w)。
\W 匹配非数字字母下划线(大写W)。
\s 匹配空格、制表符、换行符(小写s)。
\S 匹配非空白符(大写S)。
PS!!!!
但是在linux中,这些转义后具有特别含义的元字符只能单独使用,不能结合*,+或者{number},当我们将上面这些转义字符放在[]方括号中好像连他原来的含义都失去了,所以如果要使用代表这些含义的正则字符,建议使用下面介绍的posxi字符。
“=~” :判断该符号左边的字符串是否满足右边的正则表达式,且使用该判断符,必须将被比较的字符串放入两个方括号的内部[[ ]]
POSIX字符:
[:alnum:] #文字数字字符
[:alpha:] #文字字符
[:digit:] #数字字符
[:graph:] #非空字符(非空格、控制字符)
[:lower:] #小写字符
[:cntrl:] #控制字符
[:print:] #非空字符(包括空格)
[:punct:] #特殊符号,差不多键盘上非非字符和数字的符号都匹配
[:space:] #所有空白字符(空格,制表符)
[:upper:] #大写字符
[:xdigit:] #十六进制数字(0-9,a-f,A-F)
PS!!!在使用posix字符必须要使用方括号进行包括,比如[[:alnum:]],上面红色标注的是我觉得比较重要的posix字符,而且这个posix好像只能在linux的工具中使用!!!!
拓展正则表达式
同上面所有提到的要使用反斜杆转义的符号比如“?”,“+”,“{}” “()”都不需要使用反斜杆,且上述不使用反斜杆的也可以进行使用,但是必须使用egrep 或者grep -E。
egrep -o:可以提取只符合正则表达式的内容