Linux_正则表达式(2.通配符,sed)

正则表达式(2)

正则表达式:用某种模式去匹配一类字符串的公式,它是用一串字符串和元字符构成的字符串。元字符就是描述字符表达式的内容、转换和描述各种操作信息的字符。

2.扩展的正则表达式

1 “?”(问号)
  匹配前一个字符0次或者1次

#"ro?t" 仅仅匹配 rot rt 

2 “+”(加号)
  匹配前一个字符一次以上

# "ro+t" 仅仅匹配rot root

3”|”(或)
多种可能的罗列

#匹配区号是3的  "^0[0-9]\{2\}-[0-9]\{8\}"吗
#匹配区号是4的  "^0[0-9]\{3\}-[0-9]\{8\}"
#匹配区号是3或4的  "^0[0-9]\{2,3\}-[0-9]\{8\}"
    "^0[0-9]\{3\}-[0-9]\{8\} | ^0[0-9]\{2\}-[0-9]\{8\}" 

4 “()”
  经常和”|”配合使用

#h(ar|oo|ol)d  匹配 hard hood hold

3.匹配符

*  ,代表0个或多个字符   ls *.c(匹配所有的C源代码)

?  ,代表的是任意一个字符 ls A?.c(匹配A开头,2个长度的名字)

{}  ,可以匹配括号内所有以逗号隔开的字符

  ls -l {[A-Z]*.doc,[0-9]??.txt} 匹配大写字母.doc 数字+2个字母.txt 

^,!  长和[]一起使用代表取反 [^A] [!A]     

4.sed,sed只是非交互式的流编辑器,处理文本是以行为单位的,每处里完一行就立即打印出来,然后处理下一行,然后再处理下一行。

------删除-----------------------------------------
sed '1d' Leo.dat  #删除第一行
sed '1,3d' Leo.dat  #删除指定范围的行(1-3)
sed '$d' Leo.dat  #删除最后一行
sed '5!d' Leo.dat #删除指定范围以外的行       
sed -i '1d' Leo.dat #直接操作原文件
sed '/^$/d' Leo.dat #删除空行
-----查找替换--------------------------------------
sed 's/line/LINE/' Leo.dat #每一行的第一个line变成LINE
sed 's/line/LINE/2' Leo.dat  #每一行的第2个line变成了LINE
sed 's/line/LINE/g' Leo.dat #每一行所有的都匹配
sed 's/^this/that' Leo.dat #this开头的变成that
-----字符转换--------------------------------------
sed 'y/1234/abcd/' Leo.dat #1变成a , 2变成b 等
----插入文本--------------------------------------
sed '2 i Insert' Leo.dat #在第2行前插入
sed '2 a Insert' Leo.dat #在第2行后插入
sed '/second/i\Insert' Leo.dat #在second子串前面哪一行插入
----读入文本---------------------------------------
sed '/^$/r /etc/passwd' Leo.dat #在Leo.dat中空行后面插入/etc/passwd
----打印------------------------------------------
sed -n '1p' Leo.dat #打印第一行
sed -n 's/the/THE/p' Leo.dat #打印经过处理的行
----保存------------------------------------------
sed -n '1,2 w backup.dat' Leodat #把1,2行经过保存到backup.dat
---sed 脚本--------------------------------------
vi sed.rules
    s/this/that/g
    /^$/d
使用 sed -f sed.rules Leo.dat 相当于进行了2次sed操作
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux命令中,正则表达式是一种强大的工具,用于在文本中进行模式匹配和搜索。正则表达式可以应用于各种命令(如grep、sed、awk等),以及编辑器(如vim)和服务器(如nginx)等。正则表达式由字母、数字和特殊符号组成,按照一定的规则来表达某种含义。 在Linux命令中,常见的正则表达式符号包括: 1. . (点号):匹配任意一个字符。 2. * (星号):匹配前一个字符的零个或多个出现。 3. + (加号):匹配前一个字符的一次或多次出现。 4. ? (问号):匹配前一个字符的零次或一次出现。 5. [] (方括号):用于定义字符集,匹配方括号中任意一个字符。 6. ^ (脱字符):匹配行的开始位置。 7. $ (美元符号):匹配行的结束位置。 8. \ (反斜杠):用于转义特殊字符。 举个例子,如果你想在一个文件中查找所有以"hello"开头的行,你可以使用grep命令结合正则表达式进行匹配。命令如下: grep "^hello" filename 其中,^表示行的开始位置,"hello"表示要匹配的字符串。这个命令会输出所有以"hello"开头的行。 另外,正则表达式还支持更复杂的模式匹配,比如通配符、字符类、重复选项等。你可以根据具体的需求,结合正则表达式的语法规则,来构建适合你的匹配模式。 综上所述,正则表达式Linux命令中是一个非常有用的工具,可以帮助你快速准确地进行文本搜索和模式匹配。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值