17 - shell之sed命令

2022-03-29  本文已影响0人  舍是境界

sed基础

什么是sed?

sed --help
用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...

  -n, --quiet, --silent
                 取消自动打印模式空间
  -e 脚本, --expression=脚本
                 添加“脚本”到程序的运行列表
  -f 脚本文件, --file=脚本文件
                 添加“脚本文件”到程序的运行列表
  --follow-symlinks
                 直接修改文件时跟随软链接
  -i[SUFFIX], --in-place[=SUFFIX]
                 edit files in place (makes backup if SUFFIX supplied)
  -c, --copy
                 use copy instead of rename when shuffling files in -i mode
  -b, --binary
                 does nothing; for compatibility with WIN32/CYGWIN/MSDOS/EMX (
                 open files in binary mode (CR+LFs are not treated specially))
  -l N, --line-length=N
                 指定“l”命令的换行期望长度
  --posix
                 关闭所有 GNU 扩展
  -r, --regexp-extended
                 在脚本中使用扩展正则表达式
  -s, --separate
                 将输入文件视为各个独立的文件而不是一个长的连续输入
  -u, --unbuffered
                 从输入文件读取最少的数据,更频繁的刷新输出
  -z, --null-data
                 separate lines by NUL characters
  --help
                 display this help and exit
  --version
                 output version information and exit

如果没有 -e, --expression, -f 或 --file 选项,那么第一个非选项参数被视为
sed脚本。其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准
输入读取数据。
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.
sed -n '3p' /etc/passwd #指定打印第三行 -n 屏蔽默认输出
daemon:x:2:2:daemon:/sbin:/sbin/nologin

 sed -n '1,3p' /etc/passwd #指定打印1到3行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

sed '2p' /etc/hosts  #sed默认会将全文输出,这里指定打印第二行,第二行重复
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

数据定位

sed -n '3p' /etc/passwd #打印第三行
sed -n '1,3p' /etc/passwd #打印1到3行
sed -n '1~2p' /etc/passwd #第一行开始,步长为2
sed -n '2~2p' /etc/passwd #第2行开始,步长为2
sed -n '2,+3p' /etc/passwd #第2行以及后面的三行
grep ^root /etc/passwd #过滤root开头的行
sed -n '/^root/p' /etc/passwd

egrep "[0-9]{3}" /etc/passwd #过滤包含三个数字的行
sed -rn '/[0-9]{3}/p' /etc/passwd

小结

上一篇 下一篇

猜你喜欢

热点阅读