linux 命令之sed

sed是linux轻量级流编辑器,用于行的操作,主要用来数据的选取、替换、删除、新增等。

权  限:所有用户

位  置:/bin/sed

用  法:sed [-nefr]  [动作]  file

参数:

-n

不加-n的时候,sed处理的数据和不处理的都会输出,加上-n只会输出sed操作的行

-e

直接在命令行模式上进行sed的动作编辑

例如:sed -e ‘s/aaa/b/g; s/aa/b/g‘ file
也即多个动作同时操作,注意中间的分号

-f      

直接将sed动作写在一个文件内,-f file 则可以执行filename内的sed动作

-r

sed的动作支持扩展的正则表达式(默认支持基础正则表达式)

-i

直接修改读取的文件内容

动作说明:[n1[,n2]] function

不见得会存在,一般代表选择动作的行数,如果动作是在5到15行之间进行替换,则"10,20c"

a      新增,当前行的下一行

sed ‘2a hello world‘ file  输出在第2行之后插入hello world

sed ‘2a hello world\

my name is csdn‘  file

输出在2行下面插入两行分别为hello world  和my name is scdn

特别注意hello world 后面的"\"

c       替换,是整行替换

sed ‘3,6c  hello csdn‘  file

输出把3至6行的只替换为 hello csdn(第3至6行只剩下一行hello csdn,不是3至6行的每一行都为hello csdn)

d       删除

sed ‘3,6d‘ file  
输出删除file的3至6行之后的内容

i        插入,当前行的上一行

与a动作类似,参照a动作用法

p       打印

sed  -n  ‘2,5p‘ file   打印file的第2至5行

s        替换

sed ‘s/oldString/newString/g‘ file   oldString和newString支持基础正则表达式和扩展的正则表达式

cat -n nginx | sed ‘1,99s/[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}//g‘  把nginx日志的1至99行的第一个字段IP地址替换为空

结果为:

    91	 - - [15/Dec/2014:23:00:10 +0800],GET /identified?key=this-is-TMP-apikey&digest=914EBB2FD551844CBE15513C0126E6EE&digest-algorithm=ed2k&hash=9D37BB2988F26973371FAB028FEEEB93D5542300& HTTP/1.1,200 65,-,XMP Windows Client 4.9,-,ed2k://|file|ki141213.wmv|1119747351|914EBB2FD551844CBE15513C0126E6EE|h,00E04C377725NG4E,ki141213.wmv,1119747351
    92	 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-
    93	 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-
    94	 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-
    95	 - - [15/Dec/2014:23:00:10 +0800],-,400 0,-,-,-,-,-,-,-
    96	 - - [15/Dec/2014:23:00:10 +0800],GET /identified?key=this-is-TMP-apikey&digest=76BB7C854168DCD1BF15FCB92E4114FFD4CFE7DE&digest-algorithm=magnet&hash=28003498535& HTTP/1.1,200 65,-,Thunder Windows Client 7.9,-,magnet:?xt=urn:btih:76BB7C854168DCD1BF15FCB92E4114FFD4CFE7DE,EC55F9E92A5212LQ,ABP-209R,1067178826
    97	 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-
    98	 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-
    99	 - - [15/Dec/2014:23:00:10 +0800],-,400 0,-,-,-,-,-,-,-
   100	121.12.57.154 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-

如果前面的命令直接加入-i,则直接修改文件

时间: 2024-08-03 11:27:14

linux 命令之sed的相关文章

Linux命令之sed使用入门概述

sed:stream editor,Linux的一款流编辑器,主要对文本内容进行过滤与替换.使用命令man sed,可以看到对sed命令的介绍 下文总体指导思想: 对于sed的工作过程,个人认为如果不是非要把sed的所有功能都学会,是不需要把工作过程搞懂的.绝大部分人,特别针对于想要先尽快上手的人,掌握如何使用基本的sed功能应该比较重要的! 学习sed命令的使用,主要还是结合man sed中的提示来学习: sed synopsis(大纲):命令的格式 sed [option][script][

每日linux命令学习-sed

Linux的文本处理实用工具主要由sed和awk命令,二者虽然略有差异,但都使用正则表达式,默认使用标准I/O,并且使用管道命令可以将前一个命令的输出作为下一个命令的输入.笔者将在本节学习sed命令. sed命令 sed命令是以行为单位的非交互式编辑器,从通过标准输入或文件获得要处理的输入文本,对指定的行进行逐行处理,然后将结果输出传送到标准输出或文件.sed命令也可以在vi(m)编辑器中使用.sed决定对指定地址范围内的哪些输入行进行处理,此时可在地址范围内使用行号或正则表达式模式.例如,5d

转摘--如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等

http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作.数据专家们,我是在对你们说.你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, bzip2, wc, awk, sed等等,都是单线程的,只能使用一个CPU内核. 借用卡通人物Cartman的话,“如何我能使用这些内核”? 要想让Lin

linux命令之sed

sed命令格式 sed [options] 'command' file(s) 替换:s命令 sed 's/原字符串/替换字符串/' 末尾的"g"代表替换全部,否则只替换每行的第一个: # 替换所有匹配关键字 sed 's/原字符串/替换字符串/g' "-i"参数:直接修改并保存 sed -i 's/原字符串/替换字符串/g' filename 对文件做备份: sed -i '.bak' 's/原字符串/替换字符串/g' filename 例:source Insi

Linux命令:sed简介

sed是一种在线行编辑器,一次处理一行.工作时,把当前处理的行放到"模式空间"中进行编辑,编辑完成后把内容输送至屏幕. 语法:sed [OPTION]-{script}-[input file] 选项: -r:支持正则表达式 -n:静默模式,不显示内容 -e: script1 -e script2 -e script3:指定多脚本运行 -f /path/to/script_file:从指定的文件中读取脚本并运行 -i: 直接修改源文件 命令: d: 删除模式空间中的行: =:显示行号:

linux命令:sed

   sed命令简介: 文本编辑器,流编辑器,行编辑器.默认不编辑原文件, 仅对模式空间中的数据做处理: 而后处理结束后,将模式空间打印至屏幕: 1.命令格式: sed [option]'addresscommand' file ...对这个或这些文件的某一段进行编辑 Address:(表示操作文本范围) 1.StartLine,EndLine 比如1,100 $:最后一行 2./RegExp/ 使用正则表达式来匹配模式 必须使用// /^root/ 3./pattern1/,/pattern2

linux命令之sed 实现某一文件首行添加字符#

需求: 将build.sbt文件的,45行到77行,行首添加注释符# 命令如下: #sed -i "45,77s/^/#/g" build.sbt 查看文件 如果是同时修改多个文件的话,可以直接在后面添加文件,  文件之间使用空格分隔即可了.

Linux命令之sed批量替换字符串操作

使用sed命令可以进行字符串的批量替换操作,以节省大量的时间及人力: 使用的格式如下: sed -i "s/oldstring/newstring/g" `grep oldstring -rl path` 其中,oldstring是待被替换的字符串,newstring是待替换oldstring的新字符串,grep操作主要是按照所给的路径查找oldstring,path是所替换文件的路径: -i选项是直接在文件中替换,不在终端输出: -r选项是所给的path中的目录递归查找: -l选项是

Linux命令之——sed命令

编程能力: 脚本编程 grep,sed(流编程器),awk sed 基本用法: sed:Stream EDitor 行编辑器(全屏编辑器:vi) sed:模式空间 默认不编辑原文件,仅对模式空间中的数据做处理:而后,将处理结束后的空间打印到屏幕上 用法: sed [OPTION]... {script-only-if-no-other-script} [input-file]... sed +选项+{sed 脚本} sed [选项] 'AddressCommand' file... \对这个(这