linux常用命令(八)正则表达式

(一)grep模式匹配命令

1.grep 'shiyanlou' /etc/group  查找/etc/group文件中以"shiyanlou"开头的行

grep '^shiyanlou' /etc/group

2.echo 'zero\nzo\nzoo' | grep 'z.*o'  匹配以'z'开头,以'o'结尾的所有字符串

echo 'zero\nzo\nzoo' | grep 'z.o'   匹配以'z'开头,以'o'结尾,中间包含一个任意字符的字符串

echo 'zero\nzo\nzoo' | grep 'zo*'   匹配以'z'开头,以任意多个'o'结尾的字符串

3.echo '1234\nabcd' | grep [a-z]  匹配所有小写字母(\n为换行符)

echo '1234\nabcd' | grep '[[:lower:]]'  匹配所有小写字母

4.echo '1234\nabcd' | grep[0-9]  匹配所有数字

echo '1234\nabcd' | grep '[[:digit:]]'  匹配所有数字

5.echo '1234\nabcd' | grep '[[:lower:]]'  匹配所有小写字母

echo '1234\nabcd' | grep '[[:upper:]]'  匹配所有大写字母

echo '1234\nabcd' | grep '[[:alpha:]]' 匹配所有字母

6.echo '1234\nabcd' | grep '[[:alnum:]]'  匹配所有数字和字母,包括0-9,a-z,A-Z

(二)sed流编辑器

1.sed-i '1s/sad/happy/' test  将test文件第一行的"sad"替换为"happy"  (-i直接修改输入的文件内容

sed-i 's/sad/happy/g' test  g表示全局范围

sed-i '1s/sad/happy/4' test  4表示指定行中的第四个匹配字符串

2.打印指定行

nl passwd | sed -n '2,5p'  打印2-5行(-n只打印受影响的行

nl passwd | sed -n '1~2p'  打印奇数行

3.行内替换

sed -n 's/shiyanlou/hehe/gp'  passwd  将"shiyanlou"全局替换为"hehe",并只打印替换的那一行,这里不能省略最后的"p"

4.行间替换

nl passwd | grep 'shiyanlou'  打印"shiyanlou"所在行数及内容(28行)

sed-i '28c\www.shiyanlou.com' passwd  将28行内容修改为www.shiyanlou.com

nl passwd | sed -n '28p'  打印28行内容

(三)awk文本处理语言

pattern {action}   所有的动作操作用{}花括号括起来,没有pattern默认输入全部文本,没有action默认打印匹配内容到屏幕

先输入:

vim test

I like linux

www.shiyanlou.com

1.使用awk将文本内容打印到终端

awk '{

>print

>}' test

2.将test的第一行的每个字段单独显示为一行

awk '{

>if(NR==1){   NR表示当前读入的记录数

>print $1 "\n" $2 "\n" $3

>} else {

>print}

>}' test

或者

awk '{

>if(NR==1){

>OFS="\n"   OFS表示输出时字段的分隔符

>print $1,$2,$3

>} else {

>print}

3.将test的第二行的以点为分段的字段换成以空格为分隔

awk -F'.' '{   (-F参数预先指定待处理记录的字段分隔符

>if(NR==2){

>print $1 "\t" $2 "\t" $3

>}}' test

或者

awk '

>BEGIN (BEGIN表达式指示了后面的动作将在所有动作之前进行

>FS="."   (FS赋值了新的"."代替默认的空格

>OFS="\t"

>}{

>if(NR==2){

>print $1,$2,$3

>}}' test


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值