文本处理与正则表达式

博客介绍了基本正则表达式,如以特定字符开头或结尾、匹配任意字符等规则。还阐述了文本处理命令,包括grep的两种用法及常用参数,egrep、sed的行删除、新增、选取、替换等操作,以及printf文件格式化输出和awk按列处理文件、条件判断与数值计算等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本正则表达式
正则表达式字符 含义
^word 查找以word开头的文本
word$ 查找以word结尾的文本
. 代表一个任意字符
\ 转义符

  • 0到多个字符
    [abc] 代表一个字符,这个字符是a或b或c
    [a-z];[0-9] 代表a到z中的一个字符;0到9中的一个数字
    [^abc] 代表一个非a、b、c的字符
    {m,n} m到n个字符

字符匹配:
. :匹配任意单个字符
[] :匹配指定范围内的任意单个字符;
[^]:匹配制定范围外任意单个字符 [:digit:] lower upper alpha alnum space

   匹配次数:用在要指定其出现的次数的字符后面,用于限制其前面字符出现的次数
   

      

         *:匹配其在前面的字符任意次:0,1.多次


        .*:匹配任意长度的任意字符

        \?:匹配其前面字符0次或一次,及前面字符是可有可无

         \+:匹配其前面字符一次或是多次,至少一次,


         \{m\}匹配前面字符m次

         \{m.n\}匹配其前面的字符至少m次,之多n次


           \{0,n\}:之多n次
           \{m,\} :至少m次

    位置锚定:^:行首锚定:用于模式的最左侧
                 $:行尾锚定:用于模式的最右侧
                ^PATTERN:用于PATTERN
               ^$:空白行

1:空行或包含空白字符的行

               单词:非特殊字符组成的连续字符(字符串)都成为单词


             \<或是\b:词首锚定,用于单词模式的左侧

>或是\b:词尾锚定,用于单词模式的右侧

              <PATTERN\>:匹配完整单词

文本处理命令

grep用法:

grep一般有两种用法,一种是从文件查找,一种是从管道的输入查找

-n 输出结果加行号
–color=auto 匹配的关键字高亮显示
-A3 输出匹配行的后三行
-B2    输出匹配行的前两行
-v   反向查找,即输出不包含关键字的行
-i 关键字匹配时忽略关键字大小写

egrep: 扩展表达式

sed: 管道命令 可以处理管道输入

  1. 1.行删除

nl /etc/passwd | sed ‘2d’  //删除第2行

  1. 行新增

sed ‘2a drink tea’  //在第二行下面追加一行"drink tea",a代表append

  1. 行选取

sed -n ‘5,7p’  //选取第5到7行输出,必须加-n参数,不然效果就是所有行都被输出,而5到7行输出两次。

4.行替换

sed ‘2,5c No 2~5 lines’  //将第2到5行替换为一行字符串"No 2~5 lines"

  1. 字符串替换

sed ‘s/要被替换的字符串/新的字符串/g’  //固定的格式,开头是s结尾是g,中间三个/分隔开要被替换的字符串和新的字符串,注意这里要被替换的字符串可以是正则表达式。

printf 文件格式化输出

awk : 将文件通过分隔符拆成列来处理,还能通过条件判断对不同的行进行不同的处理,甚至还可以进行数值计算

  1. 将每行按分隔符拆分成列并选取某些列
  2. 通过逻辑判断对不同行进行不同的处理
  3. 对一行中的几列数值进行计算

  1. [:space:] ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值