linux文本处理三剑客

sed命令的选项

sed [选项] [动作]

  1. 选项与参数:
    -r :支持正则表达式
    -i :直接修改读取的文件内容,而不是输出到终端。
    -n:使用安静(silent)模式,只有经过sed 特殊处理的那一行(或者动作)才会被列出来。(在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上)

  2. function:
    s :替换,可以直接进行替换的工作,通常这个 s 的动作可以搭配正规表示法,例如 1,20s/old/new/g 一般是替换符合条件的字符串而不是整行
    c :取代行, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
    d :删除行
    a :后新增行
    i :前插入行
    p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
    一般function的前面会有一个地址的限制,例如 [地址]function,表示我们的动作要操作的行。

sed正则中的元字符

$ 表示行尾
^ 表示行首
[a-z0-9]表示字符范围
[^]表示除了字符集中的字符以外的字符
. 表示任意字符
*表示零个或者多个
sed的正则中 () 和 {} 需要转义

d删除行
   #!/bin/bash
   for i in range(1.8)
           result +=i
           return result
  1. 删除第 2-4 行
  sed -i -r '2,4d' test.txt 
  1. 删除以 for 开头的行
  sed -i -r '/^for/d' test.txt
  1. 删除含有字符串 result 的行
  sed -i -r '/result/d' test.txt
c替换行
  1. 将第一行文字替换为 helloworld
  sed -i -r '1c hello world' test.txt
  1. 将含有字符串 result 的行内容替换为 helloworld
  sed -i -r '/return/c hello world' test.txt
ai新增行
  1. 在第一行前新增一行内容为 ########
  sed '1i #########' test.txt
替换部分字符串
   #!/bin/bash
   for i in range(1.8)
           aa = 1aa
           aa = 2aa
           2bb = bb
           result +=i
           return result
  1. 将每行的第一个aa替换为 AA
  sed -i -r 's/aa/AA' test.txt
  1. 将全文所有的aa替换为 AA
  sed -i -r 's/aa/AA/g' test.txt
  1. 将第一行的b替换为B
  sed -i -r '1s/b/B/g' test.txt
  1. 将第3行到最后一行的aa替换为AA
  sed -i -r '3,$s/aa/AA/g' test.txt
  1. 将以数字开头的行中 bb替换为BB
  sed -i -r '/^[0-9]/s/bb/BB/g' test.txt
  1. 将含有字符串 bin 的行中 ba 替换为 BA
  sed -i -r '/bin/s/ba/BA/g' test.txt
搜索并输出行内容
  1. 搜索第二行并只输出第二行
  sed -n '2p' test.txt                      #p搜索,n安静模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值