Linux学习之sed的使用

本文和大家分享的主要是linux中sed的使用,一起来看看吧,希望对大家学习linux有所帮助。
  sed
  · sed可以基于输入到命令行的或是存储在命令文本文件中的命令来处理数据流中的数据。
  · s命令会用斜线间指定的第二个文本字符串来替换第一个文本字符串。
  echo "This is a test" | sed 's/test/big test/'  #This is a big test
  · sed编辑器自身不会修改文本文件的数据,它只会将修改后的数据发送到STOUT
  · 在sed命令上执行多个命令时,只要用-e就可以了
  sed -e 's/brown/green/; s/dog/cat/' date1  #将date1中brown替换成green,dog换成cat输出到STOUT
  -如果有大量要处理的sed命令,将它们放进一个文件中通常会方便一些
  $ cat script1s/brown/green/s/dog/cat/
  $
  $ sed -f script1 data1
  · p标记
  sed -n 's/test/trial/p' data  # -n选项禁止sed输出, p替换标记会输出修改过的行
  · w标记,将输出保存的文件中
  $ sed -n 's/test/trial/w test' data
  $ cat test
  This is a trial line
  · sed可以指定作用的行
  sed '2s/dog/cat' data  #作用到第2行
  sed '2,3s/dog/cat' data #作用到第2,3行
  sed '2,$s/dog/cat' data #作用到第2行到结尾行
  sed '/Samantha/s/bash/csh' data #作用到匹配Samantha的行上
  sed '/rich/s/bash/csh' /etc/passwd #找到含有rich的行,然后用csh替换文本bash
  · d命令可用于删除行(sed命令不会修改原始文件)
  sed 'd' data #删除data中所有行
  sed '3d' data  #删除第3行
  sed '3,$d' data #删除第3行到最后一行
  sed '/number 1/d' #删除匹配number 1的行
  · i命令会在指定行前增加一个新行
  · a命令会在指定的行后增加一个新行
  · c命令会修改指定的行
  · y命令用于当个字符的替换 sed `y/123/789/` data #data中的1替换成7,2替换成8,3替换成9
  · r命令允许将一个独立文件中的数据插入到数据流中
  $ cat data
  This is an added line.
  This is the second added line
  $ sed '3r data' test
  This is line number 1
  This is line number 2
  This is line number 3
  This is an added line.
  This is the second added line
  This is line number 4
  This is line number 5
  This is line number 6
  This is line number 7
  多行命令
  如果你正在数据中查找短语Linux System Administrators Group,很有可能短语在其中任意两个词之间被分成两行。如果你用普通的sed编辑器命令来处理文本,几乎不可能发现短语是怎么被分开的
  & 符号用来代表替换命令的匹配模式
  $ echo "The cat sleeps in his hat. " | sed 's/.at/"&"/g'
  The "cat" sleeps in his "hat".
  · 用圆括号来定义替换模式的子字符串,给第一个模块分配字符\1,第二个模块分配字符\2
  $ echo "That furry cat is pretty" | sed 's/furry \(.at\)/\1/'
  That cat is pretty
  $ echo "That furry hat is pretty" | sed 's/furry \(.at\)/\1/'
  That hat is pretty
  · 使用包装脚本使用sed, 1!G表示将保持空间附加到模式空间,不附加到第一行文本后面,$p表示数据流到达最后一行时,打印
  $ cat reverse.sh #!/bin/bash
  sed -n '{
  1!G
  h
  $p
  }' $1
  $ cat data
  This is the header line. Linux
  System This is a data line.Linux
  System This is the last line.
  $ ./reverse.sh data
  System This is the last line.
  System This is a data line.Linux
  This is the header line. Linux
  · 格式化数据
  cat format_number.sh #!/bin/bash
  result=`echo $1 | sed '{
  :start
  s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/
  t start
  }'`echo $result
  $ ./format_number.sh 12345456
  12,345,456
  · 每两行之间添加一个空行 , /^$/d 删除空白行 $!G 任意行下添加空白行,除了最后一行
  cat data
  This is one
  This is two
  This is three
  This is four
  $ sed '/^$/d;$!G' data
  This is one
  This is two
  This is three
  This is four
  · 给文件中的行编号 = 会输出行号
  $ cat data1
  This is one
  This is two
  This is three
  This is four
$ sed '=' data1 | sed 'N;s/\n/ /' 
1 This is one

3 This is two

5 This is three

7 This is four

来源:CSDN
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值