Shell编程之sed

        sed 是一种流编辑器,它一次处理一行内容。处理时把当前处理的行存储在临时缓冲区中,接着sed命令处理缓冲区中的内容,处理完成后把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容没有改变,除非你使用重定向输出语句。

语法:

        sed [ 参数 ]  "命令"  文件名

参数:

  • -n:一般 sed 命令会把所有数据都输出到屏幕上。如果加入此选项,则只会把经过 sed 命令处理的行输出到屏幕上;
  • -e: 允许对输入数据应用多条 sed 命令编辑;
  • -f 脚本文件名:从 sed 脚本中读入 sed 操作。
  • -r:在 sed 中支持扩展正则表达式;
  • -i:用 sed 的修改结果直接修改读取数据的文件,而不是由屏幕输出动作;

命令:

  • a :追加,在当前行后添加一行或多行。当添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结;
  • c :行替换,用c后面的字符串替换原数据行。当替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结;
  • i :插入,在当前行前插入一行或多行。当插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结;
  • d:删除,删除指定的行;
  • P:打印,输出指定的行;
  • s:字符串替换,用一个字符串替换另一个字符串。格式为“行范围s/旧字串/新字串/g”;

示例如下:

 准备一个测试文件,文件内容如下:

                测试1 1 11
                测试2 2 22
                测试3 3 33

 测试命令

  • 追加(a
  • 插入(i
sed "2a 测试" sed.txt

sed "2i 测试" sed.txt

Shell编程之sed_第1张图片

这里可以看到 ai 的区别,一个是在指定行之后追加写入,一个是在指定行直接插入。

  •  行替换(c
  • 字符串替换(s
sed "s/测试/实操/g" sed.txt

sed "2c 测试" sed.txt

Shell编程之sed_第2张图片

  •  多条命令(-e
sed -e "3a 测试4" -e "2c 替换" sed.txt

  •  写入文件(-i
sed -i "3a 测试4 4 44" sed.txt
cat sed.txt

Shell编程之sed_第3张图片

  •  输出指定行 (P
  • 选择输出(-n
sed "2P" -n sed.txt

        这里可以看到如果只输入 P 命令的话会把选中行和所有行都输出,加上 -n 命令之后则只输出选中的那一行

Shell编程之sed_第4张图片

 

你可能感兴趣的:(shell编程,linux,运维,shell)