sed 操作命令

sed介绍

grep 只能过滤文件内容,sed既能过滤文件内容同时还能对文件内容进行修改.  sed 算是一种编程语言,它有自己的固定语法.

sed是一种行编辑器,sed会在内存中开辟一块独立的空间(模式空间),每次读取磁盘文件中的一行调入内存空间并且默认自动打印到屏幕

sed基本语法

1. sed  [option]   ‘script‘  file

script : "地址命令addresscmd"

cmd: p   d  a  i   c  w r  =

sed命令实例

1.sed -n ‘/^root/p‘ /etc/passwd

2.  sed -n ‘/^root\>/p‘ /etc/passwd

3.   sed   -n   "1~3p"    f1

4.   sed   -n   ‘2!p"        f1

5.  sed  -r   ‘s/(root)/admin\1/g‘      /etc/passwd

6.  sed  -r    ‘s/(.*)/\1edu/‘              /etc/passwd

7. sed   -r    ‘s/(.*)/edu\1/‘              /etc/passwd

8. sed -r ‘s*/(bin/bash)$*/s\1*‘       /etc/passwd

9.sed -r ‘/GRUB_CMDLINE_LINUX/s/(.*)"$/\1 XYZ"/‘ /etc/default/grub 或者 sed -r ‘/GRUB_CMDLINE_LINUX/s/"$/ xyz"/‘ /etc/default/grub

10.使用正则表达式表示整行字符同时分割并且取到相应的字符串

正则表达式  (.*inet)(.*)(netmask.*)表示包含ip地址的整行字符串

把整行字符串分组分割成三个部分.可以取到任意分组中的字符串.

11.删除单行注释符号   找到符号用空来替代

sed    ‘/^#NameVirtualHost/s/#//‘          /etc/httpd/conf/httpd.conf

12.删除多行的注释符号

sed ‘/^#VirtualHost/,/^<\/VirtualHost/s/#//‘ /etc/httpd/conf/httpd.conf

/^#VirtualHost/         匹配到的开始行

/^<\/VirtualHost/        匹配到的结束行

对开始行和结束行中的所有行进行操作

13.    echo "/etc/sysconfig/network/" | sed -r ‘s/(.*\/)([^/]+\/?)/\2/‘

echo "/etc/sysconfig/network/" | sed -r ‘s/(.*\/)([^/]+\/?)/\1/‘

sed的高级语法

sed 命令包含两个操作空间

1. 模式空间          默认只能包含一行的文本内容   相当于正在处理数据的空间

2. 保持空间          相当于一个小仓库,用来存储暂时在模式空间中没有处理完成的数据.

[[email protected] boot]# seq 10 | sed -n ‘n;p‘
   2
   4
   6
   8
   10

sed ‘1!G;h;$!d‘  file  ‘1!G;  h;   $!d‘ 相当于通过;号把这个命令分成了3个脚本.sed读取文件的每一行文本内容依次执行这三个脚本命令.

sed ‘N;D‘  file

[[email protected] boot]# seq  5 | tac

5

4

3

2

1

倒叙内容命令

1. ls *.rpm | rev | cut -d -f2 | rev | sort | uniq -c

tac 把整个文件的行倒叙显示
     rev 按每行字符内容倒叙显示

[[email protected] ~]# seq 10 | xargs -n2
  1 2
  3 4
  5 6
  7 8
  9 10

原文地址:https://www.cnblogs.com/yxh168/p/8823959.html

时间: 2024-10-12 08:33:16

sed 操作命令的相关文章

linux---(6/27)sed命令

sed 是一种新型的,非交互式的编辑器.它能执行与编辑器 vi 和 ex 相同的编辑任务.sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令.指定文件名,然后在屏幕上查看输出. sed 编辑器没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果.默认情况下,所有的输出行都被打印到屏幕上. sed 工作过程 sed 编辑器逐行处理文件(或输入),并将输出结果发送到屏幕. sed 的命令就是在 vi和 ed/ex 编辑器中见到的那些. sed 把当前正在处理的行保

sed的使用和基本操作命令

1  使用sed格式: 1.1  命令行格式: sed 参数 命令输入的文件  (参数有-e和-n,-e一般用于调用两个命令,-n一般用于匹配p的命令意思是打印相关的行)   (命令由行定位既正则+sed命令即操作) 1.2  脚本格式: sed  -f参数 脚本文件   输入的文件 2  查看打印的行号: nl  文件  |  sed -n  要打印的行 3  Sed的行定位: 3.  1定位一行:x行号 如 sed  -n  '要打印的行数如10p'  文件   最后是打印出了第十行 /pa

sed很强大的文本操作命令

sed对文本的处理很强大,并且sed非常小,参数少,容易掌握,他的操作方式根awk有点像.sed按顺序逐行读取文件.然后,它执行为 该行指定的所有操作,并在完成请求的修改之后的内容显示出来,也可以存放到文件中.完成了一行上的所有操作之后,它读取文件的下一行,然后重复该过程直到 它完成该文件.在这里要注意一点,源文件(默认地)保持不被修改.sed 默认读取整个文件并对其中的每一行进行修改.说白了就是一行一行的操作.我用sed主要就是用里面的替换功能,真的很强大.下面以实例,详细的说一下,先 从替换

三剑客之 sed详解

    sed 作者:Jack.X 归档:学习笔记 2017/4/13 三剑客之sed 第1章 sed详解: 1.1 sed介绍: sed是linux命令中三剑客的老二,sed命令是操作.过滤和转换文本内容的强大工具,常用功能有增删改查(增加,删除,修改,查询).其中查询的功能中最常用的两大功能是过滤(过滤指定字符串),取行(取出指定行). 我先在用的sed版本是GNU开源版本的,实验环境是Centos6.8系统,内核是2.6.32-642.el6.x86_64 [[email protecte

Centos Linux 常用shell操作命令

文件处理命令:ls 功能描述:显示目录文件 命令英文原意:list 命令所在路径:/bin/ls 执行权限:所有用户 语法: ls 选项[-ald]  [文件或目录] -a 显示所有文件,包括隐藏文件 -l 详细信息显示 -d 查看目录属性 $ ls –a > dir.txt //将ls –a命令执行结果输出到dir.txt文件. $ ls –a >> dir.txt //将ls –a命令执行结果附加到dir.txt文件之后. 文件处理命令:cd 功能描述:切换目录 命令英文原意:cha

【Linux命令】--(1)文件目录操作命令

文件目录操作命令+++++文件目录操作命令+++++++++++++++++++++++++++++++ls cd pwd mkdir rm rmdir mv cp touch cat nl more less head tail+++++++++++++++++++++++++++++++=============ls==============ls [选项] [目录] 查看目录信息参考:http://www.cnblogs.com/peida/archive/2012/10/23/27348

sed实例

sed: Stream Editor 行编辑器 逐行编辑 将每行内容读入到内存中,在内存中进行处理,将结果返回给屏幕 ,此段内存空间称为模式空间 默认不编辑原文件,仅对模式空间的数据进行处理,处理结束后,将模式空间的内容显示到屏幕 sed命令的使用格式 sed [options] 'AddressCommand' file ... Address:表示对哪些行进行处理 Command:操作命令 options: -n:不再显示模式空间中的内容(默认显示) -i: 直接修改原文件 -e 'Addr

sed详解

之前,写过一篇grep正则表达式的文章.这篇记录下与grep命令具有类似相同功能的两个命令,sed和awk.grep是文本搜索工具,sed是非交互式流编辑器,awk是一种文本格式化工具. sed是一个非交互式的流编辑器.所谓非交互式,是指使用sed只能在命令行下输入编辑命令来编辑文本,然后在屏幕上查看输出:而所谓流编辑器,是指sed每次只从文件(或输入)读入一行,然后对该行进行指定的处理,并将结果输出到屏幕(除非取消了屏幕输出又没有显式地使用打印命令),接着读入下一行.整个文件像流水一样被逐行处

一种监控所有账户登陆及操作命令的方法

公司师兄教的一种方法: 将如下脚本,加入到/etc/profile最后即可 PS1="`whoami`@`hostname`:"'[$PWD]' history USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` if [ "$USER_IP" = "" ] then USER_IP=`hostname` fi if [ ! -d /tmp/hist