SED单行脚本快速参考
sed指令用法
sed指令用法sed是一个流编辑器,用于对文本文件进行基本的文本转换和操作。
它可以通过一系列指令对文本进行替换、删除、插入和格式化等操作,方便快捷地处理文本数据。
本篇文章将详细介绍sed指令的用法。
一、基本用法sed命令的基本语法如下:sed [选项] 脚本文件 [输入文件]其中,选项是一些可选的参数,可以用来控制sed命令的行为;脚本文件是包含sed指令的文件;输入文件是需要进行处理的文本文件。
执行sed命令后,它会按照脚本文件中定义的指令对输入文件进行操作,并将结果输出到标准输出。
二、指令分类sed指令可以分为以下几类:1. 查找和替换:使用正则表达式查找文本中的匹配项,并进行替换操作。
2. 删除和插入:删除文本中的某些内容,或向文本中插入新的内容。
3. 格式化:对文本进行排版和格式化,如缩进、换行等。
4. 其他操作:如复制、链接、统计行数等。
三、用法示例1. 查找和替换示例以下是一个查找和替换的示例脚本:sed 's/apple/orange/g' input.txt该指令会在input.txt文件中将所有出现的"apple"替换为"orange"。
2. 删除和插入示例以下是一个删除空白行的脚本:sed '/^[^ ]/ { N; s/\n//; }' input.txt该指令会保留非空白行,并将相邻的空白行合并为一行。
以下是一个向文本中插入新行的脚本:sed '$a\new line' input.txt该指令会在input.txt文件的末尾插入一行"new line"。
3. 格式化示例以下是一个将文本按指定宽度排版的脚本:sed 's/\(.*\)/&\n/g; s/^\n*//; s/\n/\t/g; s/\t*$//;s/\t*/& /g; /^$/d' input.txt width=20 && width=80 >output.txt该指令会将input.txt文件中的每一行按照指定的宽度进行排版,并将结果输出到output.txt文件中。
sed基本用法
`sed` 是一个流编辑器,它用于在文本流中进行基本的文本转换。
它以行为单位处理文本,可以执行插入、删除、查找和替换等操作。
以下是`sed` 的基本用法:1. 插入文本(Insertion):使用`i\` 命令可以在指定行之前插入文本。
例如,要在第5行之前插入一行文本,可以使用以下命令:```arduinosed -i '5i\This is the new line of text.' filename.txt```2. 删除文本(Deletion):使用`d` 命令可以删除指定行。
例如,要删除第10行,可以使用以下命令:```arduinosed -i '10d' filename.txt```3. 查找和替换文本(Substitution):使用`s` 命令可以查找并替换指定文本。
例如,要将所有出现的"apple" 替换为"orange",可以使用以下命令:```arduinosed -i 's/apple/orange/g' filename.txt```其中,`g` 表示全局替换,即替换每一行中的所有匹配项。
如果不加`g` 参数,只会替换每行中的第一个匹配项。
4. 打印文本(Print):使用`p` 命令可以打印指定行。
例如,要打印第10行到第20行,可以使用以下命令:```arduinosed -n '10,20p' filename.txt```使用`-n` 参数可以禁止默认打印所有行,只打印指定的行。
5. 控制输出(Control):使用`q` 命令可以退出`sed` 并打印指定行,然后退出。
例如,要打印第10行然后退出,可以使用以下命令:```arduinosed -n '10q' filename.txt```6. 正则表达式(Regular Expression):`sed` 支持使用正则表达式进行更复杂的文本处理。
sed命令的用法
sed(Stream Editor)是一个强大的文本处理工具,它可以用于对文本进行替换、删除、插入、打印等操作。
下面是sed命令的一些常见用法:1. 替换文本:```sed 's/要替换的内容/替换后的内容/g' 文件名```例如,将文件中所有的"apple"替换为"orange":```sed 's/apple/orange/g' file.txt```2. 删除行:```sed '行号d' 文件名```例如,删除文件中的第3行:```sed '3d' file.txt```3. 插入内容:```sed '行号i\要插入的内容' 文件名```例如,在文件的第5行前插入一行"Hello World":```sed '5i\Hello World' file.txt```4. 打印特定行:```sed -n '行号p' 文件名```例如,打印文件中的第2行和第4行:```sed -n '2p;4p' file.txt```5. 正则匹配:```sed '/匹配模式/操作' 文件名```例如,删除包含"test"的行:```sed '/test/d' file.txt```这只是sed命令的一些基本用法示例,它还有更多高级功能和选项。
你可以通过查看sed的文档或使用`man sed`命令来获取更详细的信息和用法示例。
sed命令的使用方法
sed命令的使用方法【原创实用版3篇】目录(篇1)1.sed 命令简介2.sed 命令的基本语法3.sed 命令的常用选项4.sed 命令的应用实例正文(篇1)【sed 命令简介】sed(Stream Editor)是一种流编辑器,用于对文本文件进行处理。
它可以对文本文件进行替换、删除、插入等操作,功能非常强大。
sed 命令在 Linux 和 Unix 系统中广泛使用,对于文本文件的处理非常方便。
【sed 命令的基本语法】sed 命令的基本语法如下:```sed [选项] 脚本```其中,脚本是用于指定 sed 命令操作的文本文件。
sed 命令会按照脚本中的指令对输入文件进行处理,并将结果输出到标准输出设备(通常是屏幕)。
【sed 命令的常用选项】以下是一些常用的 sed 命令选项:- -i:用于在原始文件上进行修改,而不是创建一个新的输出文件。
- -n:用于只输出与脚本匹配的行。
- -v:用于显示脚本的详细输出信息。
- -r:用于递归地处理目录中的所有文件。
- -e:用于指定一个或多个脚本。
【sed 命令的应用实例】以下是一些 sed 命令的应用实例:1.替换:将文本文件中的所有“hello”替换为“world”。
```sed "s/hello/world/" input.txt > output.txt```2.删除:删除文本文件中的所有空行。
```sed "/^$/d" input.txt > output.txt```3.插入:在文本文件的每一行末尾插入一个字符串。
```sed "s/$/abc/" input.txt > output.txt```4.筛选:只输出文本文件中包含特定字符串的行。
```sed "/hello/p" input.txt > output.txt```【结语】sed 命令是一种非常实用的文本处理工具,它可以帮助我们对文本文件进行各种复杂的操作。
sed命令——精选推荐
sed命令sed(Stream EDitor, ⾏编辑器)命令@(0001学习博客)sed也是⼀种语⾔,是⼀种⾏编辑器。
sed是⼀种流编辑器,它⼀次处理⼀⾏内容。
处理时,把当前处理的⾏存储在临时缓冲区中,称为“模式空间”(pattern space),接着⽤sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。
然后读⼊下⾏,执⾏下⼀个循环。
如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。
这样不断重复,直到⽂件末尾。
⽂件内容并没有改变,除⾮你使⽤重定向存储输出。
功能:主要⽤来⾃动编辑⼀个或多个⽂件,简化对⽂件的反复操作,编写转换程序等1.sed地址命令sed [option]... 'script' inputfile...# option:-n:不输出模式空间内容到屏幕,即不⾃动打印。
如果不加-n,那么被匹配到的⾏会显⽰2次。
-e: 多点编辑sed -n -e '2p' -e '6p' /etc/passwd 表⽰显⽰第⼆⾏和第6⾏-f:/PATH/SCRIPT_FILE: 从指定⽂件中读取编辑脚本-r: ⽀持使⽤扩展正则表达式-i.bak: 备份⽂件并原处编辑,⽰例如下:-i,对⽂件进⾏直接编辑-i.bak 原⽂件⾃动⽣成⼀个.bak 的备份⽂件,同时对原⽂件修改sed -i.bak '2,5atesti' /data/ffsed -i.bak "/alias/aalias cdnet='cd /etc/sysconfig/network-scripts/'" .bashrc 注意""与''的运⽤# script:'地址命令'# 地址界定:不给地址,全对全⽂进⾏处理;单地址:#: 指定的⾏;$:最后⼀⾏;/pattern/:被此处模式所能够匹配到的每⼀⾏(使⽤正则表达式)地址范围:#,##,+#/pat1/,/pat2/ 从第⼀次匹配到pat1开始到第⼀次匹配到pat2结束#,/pat1/ 从第#⾏开始到匹配到pat1结束步进:1~2 奇数⾏,从第⼀⾏开始,每次递增2⾏2~2 偶数⾏,从第⼆⾏开始,每次递增2⾏# 编辑命令:d: 删除模式空间匹配的⾏,并⽴即启⽤下⼀轮循环p:打印当前模式空间内容,追加到默认输出之后a [\]text:在指定⾏后新开⼀⾏追加⽂本,⽰例如下:sed '2,5abbb' /data/ff 在第2-5⾏后添加新⾏bbbsed '/\<sst\>/asunsongtai' /etc/passwd 在sst这⼀⾏后添加sunsongtaised -i.bak "/alias/aalias cdnet='cd /etc/sysconfig/network-scripts/'" .bashrc 注意""与''的运⽤注意:这些操作并没有真正在⽂件中修改,⼀切都是在内存中,要想真正修改要加-i选项⽀持使⽤\n实现多⾏追加i [\]text:在⾏前⾯插⼊⽂本c [\]text:替换⾏为单⾏或多⾏⽂本w /path/somefile: 保存模式匹配的⾏⾄指定⽂件r /path/somefile:读取指定⽂件的⽂本⾄模式空间中,匹配到的⾏后=: 为模式空间中的⾏打印⾏号!:模式空间中匹配⾏取反处理sed '2!d' /etc/passwd 表⽰除了第⼆⾏全删除sed -n '/root/!p' /etc/passwd 显⽰不被匹配带root的⾏2.sed⼯具s///:查找替换,⽀持使⽤其它分隔符,也可以换成s@@@,s###替换标记:g: ⾏内全局替换p: 显⽰替换成功的⾏w /PATH/TO/SOMEFILE:将替换成功的⾏保存⾄⽂件中# ⽰例:sed 's/root/rooter/g' /etc/passwd 表⽰⽂件内全局搜索root并⽤rooter替换sed -r 's/(root)/woshi\1/g' /etc/passwd ⽀持扩展正则表达式,全局替换sed -i.bak -r 's/(root)/woshi\1/g' /etc/passwdsed -r '/GRUB_CMDLINE_LINUX/s/(quiet)/\1 xyz/' /etc/default/grub 或sed -r 's/(GRUB_CMDLINE_LINUX.*)"$/\1 xyz"/' /etc/default/grubifconfig ens33| sed -n '2p' | sed -r -e 's/.*inet //' -e 's/ netmask.*//' 只留下ip地址,或者ifconfig | sed -n '2p' | sed -r 's/.*inet (.*)netmask.*/\1/' 或者ifconfig | sed -r '2!d;s/.*inet (.*)netmask.*/\1/'echo /etc/sysconfig/network-scripts/ifcfg-ens33 | sed -r 's@(.*/)([^/].*/?$)@\1@' 取路径名echo /etc/sysconfig/network-scripts/ifcfg-ens33 | sed -r 's@(.*/)([^/].*/?$)@\2@' 取基名3.⾼级编辑⼯具模式空间(pattern space):当前处理的⾏所存储的临时缓冲区;保持空间P:打印模式空间开端⾄\n内容,并追加到默认输出之前h: 把模式空间中的内容覆盖⾄保持空间中H:把模式空间中的内容追加⾄保持空间中g: 从保持空间取出数据覆盖⾄模式空间G:从保持空间取出内容追加⾄模式空间x: 把模式空间中的内容与保持空间中的内容进⾏互换n: 读取匹配到的⾏的下⼀⾏覆盖⾄模式空间N:读取匹配到的⾏的下⼀⾏追加⾄模式空间d: 删除模式空间中的⾏D:如果模式空间包含换⾏符,则删除直到第⼀个换⾏符的模式空间中的⽂本,并不会读取新的输⼊⾏,⽽使⽤合成的模式空间重新启动循环。
SED单行脚本快速参考
在网上发现了一份关于sed 和awk 的单行脚本命令的参考,觉得挺有意思的,转录如下:Contentso SED 单行脚本o文本间隔o编号o文本转换和替代o选择性地显示特定行o选择性地删除特定行o特殊应用o AWK 单行脚本o用法o文本间隔o编号和计算o构建字符串o构建数组o文本转换和替代o选择性的打印某些行o选择性的删除某些行SED 单行脚本文本间隔在每一行后面增加一空行:sed G将原来的所有空行删除并在每一行后面增加一空行,这样在输出的文本中每一行后面将有且只有一空行:sed '/^$/d;G'在每一行后面增加两行空行:sed 'G;G'将第一个脚本所产生的所有空行删除(即删除所有偶数行):sed 'n;d'在匹配式样“regex”的行之前插入一空行:sed '/regex/{x;p;x;}'在匹配式样“regex”的行之后插入一空行:sed '/regex/G'在匹配式样“regex”的行之前和之后各插入一空行:sed '/regex/{x;p;x;G;}'编号为文件中的每一行进行编号(简单的左对齐方式)。
这里使用了“制表符”(tab,见本文末尾关于'\t'的用法的描述)而不是空格来对齐边缘:sed = filename | sed 'N;s/\n/\t/'对文件中的所有行编号(行号在左,文字右端对齐):sed = filename | sed 'N; s/^/ /; s/ *\(.\{6,\}\)\n/\1 /'对文件中的所有行编号,但只显示非空白行的行号:sed '/./=' filename | sed '/./N; s/\n/ /'计算行数(模拟"wc -l"):sed -n '$='文本转换和替代Unix环境:转换DOS的新行符(CR/LF)为Unix格式:sed 's/.$//' # 假设所有行以CR/LF结束sed 's/^M$//' # 在bash/tcsh中,将按Ctrl-M改为按Ctrl-Vsed 's/\x0D$//' # ssed、gsed 3.02.80,及更高版本Unix环境:转换Unix的新行符(LF)为DOS格式:sed "s/$/`echo -e \\\r`/" # 在ksh下所使用的命令sed 's/$'"/`echo \\\r`/" # 在bash下所使用的命令sed "s/$/`echo \\\r`/" # 在zsh下所使用的命令sed 's/$/\r/' # gsed 3.02.80 及更高版本DOS环境:转换Unix新行符(LF)为DOS格式:sed "s/$//" # 方法 1sed -n p # 方法 2DOS环境:转换DOS新行符(CR/LF)为Unix格式(下面的脚本只对UnxUtils sed 4.0.7及更高版本有效。
sed () 用法
sed是一种非交互式的文本编辑器,可以用来对文本文件进行各种操作。
sed命令通常用于在文本中查找、替换、删除或插入文本。
以下是一些常见的sed用法:
1. 替换文本:使用sed命令可以轻松地对文本进行替换。
例如,要将一个文件中所有的"cat"字符串替换为"dog",可以使用如下命令:
```
sed 's/cat/dog/g' filename.txt
```
这个命令将会在filename.txt的每一行中,将所有的"cat"替换为"dog"。
2. 删除行:使用sed命令可以删除指定的行。
例如,要删除一个文件中的第5行,可以使用如下命令:
```
sed '5d' filename.txt
```
这个命令将会删除filename.txt中的第5行。
3. 插入文本:使用sed命令可以在指定位置插入文本。
例如,要在一个文件的第10行后插入一行文本,可以使用如下命令:
```
sed '10a\This is a new line of text' filename.txt
```
这个命令将会在filename.txt的第10行后面插入一行文本"This is a new line of text"。
以上是一些sed命令的示例,但是实际使用中可能还有更多的用法和选项。
如果需要更详细的信息,可以使用man sed命令来查看sed的手册页。
sed教程
sed教程sed是一种强大的文本处理工具,它可以用来对文本进行搜索、替换、删除、插入和打印等操作。
本教程将介绍如何使用sed命令来完成这些操作。
1. sed命令的基本用法sed命令的基本用法是将文本流传递给sed命令,并对传入的文本进行相应的处理。
它的语法为:```sed [选项] '[动作]' 文件```其中,选项用于指定sed命令的一些特殊行为,动作用于指定对文本的处理操作,文件指定要处理的文本文件。
2. 搜索和替换文本sed命令最常用的功能之一是搜索和替换文本。
可以使用s命令指定搜索和替换的模式。
例如,要将文本中的所有foo替换为bar,可以使用以下命令:```sed 's/foo/bar/g' 文件```其中,s表示替换操作,foo表示要搜索的模式,bar表示要替换的内容,g表示在每一行上查找并替换所有出现的匹配项。
3. 删除和插入文本除了搜索和替换,sed还可以用于删除和插入文本。
可以使用d命令指定要删除行的模式。
例如,要删除包含foo的所有行,可以使用以下命令:```sed '/foo/d' 文件```其中,/foo/表示要删除的行的模式,d表示删除操作。
可以使用i命令指定要插入的文本。
例如,要在匹配到foo的行之前插入一行文本bar,可以使用以下命令:```sed '/foo/i\bar' 文件```其中,/foo/表示要插入的行的模式,i表示插入操作,\用于换行并指示插入的文本。
4. 打印文本sed还可以用于打印文本。
可以使用p命令指定要打印的行的模式。
例如,要打印包含foo的所有行,可以使用以下命令:```sed -n '/foo/p' 文件```其中,-n表示不要自动打印行,/foo/表示要打印的行的模式,p表示打印操作。
5. 使用正则表达式sed支持使用正则表达式进行模式匹配。
可以使用正则表达式来更灵活地搜索和替换文本。
windows sed命令用法
windows sed命令用法Windows sed命令是一个强大的文本处理工具,用于在命令行中进行文本替换、删除、插入等操作。
本文将介绍sed命令的基本用法和常见参数,并以中括号为主题给出具体的使用实例。
一、sed命令简介sed是stream editor(流编辑器)的缩写,它主要用于对文本文件进行处理。
sed通过读取文件内容并逐行进行处理,可以根据用户定义的规则对文本进行修改。
二、sed命令的基本用法1. 命令结构sed命令的基本结构为:sed [选项] '命令' 文件名2. 常用选项- i:在原文件上进行修改(默认是输出到标准输出)- e:<script>为sed的命令脚本,可以包含多个sed命令,用分号分隔- r:将文件的内容插入到输出流中- n:取消默认的输出,只输出经过命令处理的结果- p:打印结果- s/<pattern>/<replacement>/:替换指定的模式三、常见sed命令示例1. 文本替换替换指定文本的命令格式为:s/<pattern>/<replacement>/ 例如,将文本文件中的所有"[]"替换为"{}",可以使用以下命令:sed 's/\[/{/g' filename2. 插入文本在指定行之前插入文本可以使用命令格式为:i\例如,在第10行前插入"hello",可以使用以下命令:sed '10i\hello' filename3. 删除文本删除指定文本的命令格式为:d例如,删除包含"[]"的所有行,可以使用以下命令:sed '/\[/d' filename4. 多个sed命令可以使用分号将多个sed命令组合在一起。
例如,将文本文件中的所有"foo"替换为"bar",并在第10行前插入"hello",可以使用以下命令:sed -e 's/foo/bar/g' -e '10i\hello' filename四、结论本文介绍了Windows sed命令的基本用法和常见参数,并以中括号为主题给出了具体的使用实例。
Shell脚本sed命令修改文件的某一行
Shell脚本sed命令修改⽂件的某⼀⾏⽤法
使⽤Shell脚本⾃动化调参需要对⽂件进⾏修改
最初想到调⽤python进⾏字符串处理,通过正则表达式匹配然后修改,⽐较⿇烦
偶然发现shell其实⾃带sed命令可以处理这个问题
#!/bin/bash
sed -i "26c Delay = $1" camera.lua
运⾏上述脚本./calib.sh 250即可将camera.lua配置⽂件的第26⾏改写为Delay = 250
特殊
若写⼊字符串中存在双引号则需要通过\"进⾏转义
#!/bin/bash
sed -i "2c Name = \"MyCam\"" camera.lua
扩展
sed
sed命令可以按⾏显⽰⽂件,例如
sed -n '26p' camera.lua #显⽰camera.lua的第26⾏内容
添加-i参数可对⽂件直接进⾏修改(慎⽤)
$0
shell中⼀些特殊变量可以获取外部传⼊的参数值
$ ./calib.sh 1 2 3
$0在shell脚本中⽤于获取传⼊命令的参数,其中$0为./calib.sh即命令本⾝
$1为第⼀个参数,值为1
以此类推$2 $3。
shell脚本之sed详解(sed命令,sed-e,sedsnewold...)
shell脚本之sed详解(sed命令,sed-e,sedsnewold...)(⼀)Sed是⼀个⾮交互性⽂本流编辑器。
它编辑⽂件或标准输⼊导出的⽂本拷贝。
vi中的正则表达式命令在sed中⼤多可以通⽤。
##sed常⽤选项-e script 指定sed编辑命令-f scriptfile 指定的⽂件中是sed编辑命令-n 寂静模式,抑制来⾃sed命令执⾏过程中的冗余输出信息,⽐如只显⽰那些被改变的⾏。
-i[SUFFIX], –in-place[=SUFFIX] 替换和备份源⽂件edit files in place (makes backup if extension supplied)##1.参数p: 打印匹配⾏$ sed -n ’2p’/etc/passwd 打印出第2⾏$ sed -n ’1,3p’/etc/passwd 打印出第1到第3⾏$ sed -n ‘$p’/etc/passwd 打印出最后⼀⾏$ sed -n ‘/user/p’ /etc/passwd 打印出含有user的⾏$ sed -n ‘/\$/p’ /etc/passwd 打印出含有$元字符的⾏,$意为最后⼀⾏$ sed -n ‘$=’ ok.txt 打印总⾏数##2.参数a和i: 插⼊⽂本和附加⽂本(插⼊新⾏)$ sed -n ‘/FTP/p’/etc/passwd 打印出有FTP的⾏$ sed ‘/FTP/a\ 456′ /etc/passwd 在含有FTP的⾏后⾯新插⼊⼀⾏,内容为456$ sed ‘/FTP/i\ 123′ /etc/passwd在含有FTP的⾏前⾯新插⼊⼀⾏,内容为123$ sed ‘/FTP/i\ “123″’ /etc/passwd在含有FTP的⾏前⾯新插⼊⼀⾏,内容为”123″$ sed ’5 a\ 123′ /etc/passwd 在第5⾏后插⼊⼀新⾏,内容为123$ sed ’5 i\ “12345″’ /etc/passwd 在第5⾏前插⼊⼀新⾏,内容为”123表达式45″sed-搜索结果后⾯增加嵌⼊代码#!/bin/bash#export LANG=zh_CNfind ./ -name “*.html” -exec grep 10000008/100 ‘{}’ \; -exec sed -i ‘/10000008/a\<\!--\# include file=\"\/code.html\"--\>‘ {} \;###3.参数d:删除⽂本删空格sed -i ‘s/[ ]*//g’ ~/$cid.txt删除⽆内容空⾏sed ‘/^$/d’ file.conf > file.new.confsed -i ‘/^$/d’ ~/$cid.txt删第⼀⾏sed -i ’1d’ ~/$cid.txt删前两⾏sed -i ’1,2d’ ~/$cid.txtdel多⾏cat SCTP.log |sed ’1d;2d;$d’删除最后⼀⾏:sed -e ‘$d’ file删除最后两⾏:sed ‘N;$!P;D’ filesed ‘N;$!P;$!D;$d’ file删除最后n⾏:$vi sed.sh$!/bin/bashA=$(sed -n ‘$=’ file)sed $(($A-n+1)),${A}d file$ sed ‘/user/d’/etc/passwd删除带有string的⾏(del include love row head)sed -i ‘/^love/d’ filesed -i ‘/love/d’ filevi删除包含strings前4⾏,后34⾏:/strings/-4,+34d删除配置⽂件中#号注释⾏sed ‘s#\#.*##’ file.conf > file.new.confsed ‘s,\#.*,,’删除配置⽂件中//号注释⾏sed ‘s#//.*##’ file.conf > file.new.confsed ‘s@//.*@@’删除由空格和Tab⽽成的空⾏sed ‘/^[[:space:]]*$/d’ file.conf > file.new.confsed ‘/^[[:space:]]*$/d’删除尾⾏的空格sed -e ‘s/.$//’ file > file.new.conf在尾⾏添加1个空格sed ‘s/[0-9]$/& /g’ file > flile.new.conf##4.参数s:替换⽂本,替换命令⽤替换模式替换指定模式,格式为:[ a d d r e s s [,address]] s/pattern-to-find/replacement-pattern/[g p w n]$ sed ‘s/user/USER/’/etc/passwd 将第1个user替换成USER,g表明全局替换$ sed ‘s/user/USER/g’/etc/passwd 将所有user替换成USER$ sed ‘s/user/#user/’/etc/passwd 将第1个user替换成#user,如⽤于屏蔽作⽤$ sed ‘s/user//’/etc/passwd 将第1个user替换成空$ sed ‘s/user/&11111111111111/’/etc/passwd 如果要附加或修改⼀个很长的字符串,可以使⽤( &)命令,&命令保存发现模式以便重新调⽤它,然后把它放在替换字符串⾥⾯,这⾥是把&放前⾯$ sed ‘s/user/11111111111111&/’/etc/passwd 这⾥是将&放后⾯在包含字符串test的任意⾏上,将111替换成222$ sed ‘/test/s/111/222/g’ sample.txt##5. 快速⼀⾏正则表达式命令下⾯是⼀些⼀⾏命令集。
sed命令的使用方法
sed命令的使用方法(原创实用版2篇)目录(篇1)1.sed 命令简介2.sed 命令的基本语法3.sed 命令的应用示例正文(篇1)【sed 命令简介】sed(Stream Editor,流编辑器)是一种在 Linux 和 Unix 系统中广泛使用的文本处理工具,它可以对文本文件进行非破坏性的编辑。
sed 命令可以对文本进行替换、删除、插入等操作,也可以进行复杂的文本处理任务,如自动格式化、文本转换等。
【sed 命令的基本语法】sed 命令的基本语法如下:```sed [选项] 脚本```其中,选项包括:- -i:对原文件进行修改- -n:只输出经过处理的文本- -v:显示详细输出信息- -e:指定脚本文件脚本部分则是对文本进行处理的一系列命令,通常是一条或多条命令。
这些命令可以组合使用,以实现复杂的文本处理任务。
【sed 命令的应用示例】下面我们通过一些应用示例来具体了解 sed 命令的使用方法:1.替换文本假设我们有一个名为 test.txt 的文件,内容如下:```Hello, world!This is a test.```我们可以使用 sed 命令将文件中的所有“world”替换为“universe”:```sed "s/world/universe/" test.txt```2.删除文本我们可以使用 sed 命令将文件中的所有“test”删除:```sed "/test/d" test.txt```3.插入文本假设我们要在文件的每一行前加上“# ”,可以使用以下命令:```sed "1i# " test.txt```4.对文本进行格式化我们可以使用 sed 命令将文件中的文本转换为大写:```sed "y/a-z/A-Z/" test.txt```【总结】sed 命令是一种功能强大的文本处理工具,它可以在 Linux 和 Unix 系统中对文本文件进行非破坏性的编辑。
Linux Sed 命令基础使用教程
1.简介Sed是Linux系统中的一个强大的文本处理工具,它作为流编辑器(stream editor)工作,可以在不直接打开文件的情况下,对文本数据执行各种修改、搜索、替换等操作。
通过一系列精心设计的命令,Sed能够高效地自动处理大量文本文件。
2.Sed命令选项1-h:显示帮助信息;2-V:显示版本信息;3-e:允许在命令行直接指定多个编辑指令,这是默认选项;4-f filename:从文件filename中读取Sed命令;5-i:直接修改原文件内容,而不是输出到标准输出;6-n:抑制默认的输出行为,仅打印由p命令明确指定的行;3.Sed命令参数1d【删除】删除匹配的行;2s【替换】替换匹配成功的内容;3c【修改】修改匹配成功的内容;4a【添加】在匹配成功的行下面插入内容;5i【添加】在匹配成功的行上面插入内容;6p【打印】打印匹配成功的内容;4.Sed应用实例1.替换内容替换单个1匹配第一个127.0.0.1内容并替换为127.0.0.2第一种方式sed-i's/127.0.0.1/127.0.0.2/'test.sh第二种方式sed-i's?127.0.0.1?127.0.0.3?'test.sh替换所有1末尾加g表示替换所有匹配成功的内容,否则只替换第一个匹配成功。
sed-i's/127.0.0.1/127.0.0.2/g'test.sh按行替换1替换第一行sed'1s/127.0.0.2/127.0.0.1/'test.sh2替换第一行到第二行sed'1,2s/127.0.0.2/127.0.0.1/g'test.sh2.追加内容1在第二行后面追加hello内容sed-i'2a\hello'test.sh2在每一行后面都追加hell内容sed-i'a\hello'test.sh3在最后一行追加hello内容sed-i'$a\hello'test.sh4在第二行前面追加hello内容sed-i'2i\hello'test.sh5在每一行前面都追加hell内容sed-i'i\hello'test.sh3.删除内容1删除第一行sed-i'1d'test.sh2删除2到4行sed-i'2,4d'test.sh3删除第一行sed-i'^d'test.txt4删除最后一行sed-i'$d'test.txt5删除所有空行sed-i'/^$/d'test.txt4.打印内容1打印所有匹配行sed-n'/127.0.0.1/p'test.sh2打印所有匹配的内容和行号sed-n'/127.0.0.1/p;='test.sh5.总结以上示例覆盖了Sed命令的基本用法,包括替换、追加、插入、删除和打印等操作,能够帮助用户高效地处理文本文件。
sed命令
sed命令sed 是一种在线编辑器,它一次处理一行内容。
处理时,把当前处理的行(1)存储在临时缓冲区中,称为“模式空间”(pattern space),接着用(2)sed命令处理缓冲区中的内容,处理完成后,(3)把缓冲区的内容送往屏幕。
接着处理下一行,这样不断重复,直到文件末尾。
文件内容并没有改变,除非你使用重定向存储输出。
Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
命令:[root@www ~]# sed [-nefr] [动作]选项与参数:-n :使用安静(silent)模式。
在一般sed 的用法中,所有来自STDIN 的数据一般都会被列出到终端上。
但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;-r :sed 的动作支持的是延伸型正规表示法的语法。
(默认是基础正规表示法语法)-i :直接修改读取的文件内容,而不是输出到终端。
动作说明: [n1[,n2]]functionn1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在10 到20 行之间进行的,则『 10,20[动作行为] 』function:a :新增,a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~c :取代,c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);p :列印,亦即将某个选择的数据印出。
通常 p 会与参数 sed -n 一起运行~s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!。
sed初学者实用说明
sed初学者实⽤说明例如,在多个系统、应⽤程序安装之后,我们往往需要对很多配置⽂件进⾏修改,⽤vi编辑器意味着耗费时间、重复劳动,⽽sed就可将我们从繁重的重复劳动中解放出来。
1、sed [sed选项] 'sed命令' 要修改的⽂件2、sed [sed选项] -f sed脚本要修改的⽂件3、sed脚本 [sed选项] 要修改的⽂件这⾥仅介绍最常⽤的第⼀种⽅式-i:直接修改源⽂件(不⽤这个选项的话⽆法直接修改,必须重定向到新⽂件,如果仅作为输出测试则不需此选项),还可将源⽂件修改前备份sed -i.bak 's/123/234/' test.txt 将test.txt备份为test.txt.bak,然后将⽂件内⾏第⼀个出现的“123”替换为“234”-e:多次编辑,例如先将所有的123替换为234,再将第7⾏前加#号注释sed -i -e 's/123/234/g' -i -e '7 s/^/#/' test.txt-f:指定sed脚本⽂件名-n:取消默认的输出(不打印),⽤sed不加任何选项的话你会看到所有内容输出,并不是按照sed命令所限制的条件输出,那么配合“p”命令经可以过滤掉不符合条件的⾏,并显⽰出符合条件的⾏,例如sed -n '查找所有包含字符123的⾏'p test.txt 或 sed -n '查找所有包含字符123的⾏p' test.txtsed命令:这⾥可以使⽤正则表达式,如遇特殊字符,需⽤“\”来屏蔽其特殊含义,例如“\$”表⽰普通的字符$x x为某⾏⾏号x,y 例如2,5,从第2⾏到第5⾏/val/ 查询包含“val”字符的⾏/val1/val2/ 查询包含两个模式的⾏val/,x 在给定⾏号的⾏上查询包含“val”的⾏x,/val/ 通过⾏号和模式查询匹配的⾏x,y! 不包含指定⾏号x,y的⾏p 打印匹配的⾏= 显⽰⾏号a\ 在定位了的⾏之后附加内容i\ 在定位了的⾏之后插⼊内容d 删除定位的⾏,例如:2d 代表删除第2⾏c\ ⽤新⽂本替换定位⾏的⽂本s 替换,形式为:'s/查找的内容/替换的内容/'g 进⾏全局替换,如不使⽤此选项将只对该⾏匹配到的第⼀个结果进⾏替换,该⾏下⼀个匹配的就不处理了。
sed处理一行,替换删除
sed处理⼀⾏,替换删除sed option 'action' filename (⽂件可多个)option: -i 直接在原⽂件中修改!-n 安静模式,默认情况所有数据都会被列出,但-n只有经过动作处理的那⼀⾏才被列出(结合p使⽤) 2. 选项-action动作:'[n1[,n2]]function' 表⽰对n1、n2之间的⾏进⾏处理!function:d 删除当前⾏,sed '2,5d' 删除2~5⾏g 获得内存缓冲区的内容,并替代当前模板块中的⽂本。
配合s使⽤,否则只替换⼀⾏中的第⼀个!a 将后续的字符新增⼀⾏到⽬前的下⼀⾏,sed '2a drink tea \(插⼊多⾏分隔符) ...' ,添加⾏i 同上,插⼊到当前的前⼀⾏,添加⾏c 替换,⽤后续的字符串替换n1 , n2之间的⾏,sed '2,5c No number 2-5's 替换单个词,sed '1,20s/old/new/g' ,使⽤可参考vi替换,s#可将#作为分隔符(紧跟s)p 打印,将选中的⾏打印出来,通常和sed -n ⼀起使⽤,sed -n '5,7p' ,只显⽰5~7⾏,P 打印第⼀⾏!3. ⽰例⾏⾸插⼊字符: sed -i '2s/^/\t/g' file_name //直接修改源⽂件⾏位插⼊字符: sed -i 's/$/啥话/g' 123.log删除指定⾏: sed '2d' ; sed '3,5'删除包含test的⾏: sed '/test/d'sed -n '5,7p' ,只显⽰5~7⾏sed -n '4p' ,只显⽰第4⾏sed -n '/Check SGA start/,/Check SGA end/p' //查找 start<-->end之间的⾏sed -n '/a/ {n;p}' test.log //只打印匹配⾏的下⼀⾏sed -n '/^a$/,+1p' test.log //打印匹配⾏及下⼀⾏。
一分钟sed入门
1.简介sed是一种行编辑器,它一次处理一行内容。
2.sed调用方式sed [options] 'command' file(s)sed [options] -f scriptfile file(s)第一种直接在命令行中执行,第二种把命令写到了脚本中,二者无本质区别。
示例(1):打印hello.txt的内容sed -n p hello.txt说明:-n:sed会在处理一行文本前,将待处理的文本打印出来,-n参数关闭了这个功能p:命令表示打印当前行hello.txt:待处理的文件这个指令相当于cat3.定址告诉sed你期望处理的行,由逗号分隔的两个数字表示,$符号表示最后一行;当然也可以使用正则来定位期望处理的行。
示例(2):打印hello.txt的第二行到最后一行sed -n '2,$'p hello.txt示例(3):打印hello.txt中正则匹配"100"的行sed -n '/100/'p hello.txt4.基本命令hello.txt的内容为1 2 310 20 30100 200 300命令:a\在匹配行的后面加入一行文本示例(4)匹配100的行,后面加入一行"new line" sed '/100/'a\ "new line" hello.txt输出内容为:1 2 310 20 30100 200 300new line命令:i\在匹配行的前面加入一行文本示例(5)匹配100的行,前面加入一行"new line" sed '/100/'i\ "new line" hello.txt输出内容为:1 2 310 20 30new line100 200 300命令:c\将匹配行替换为目的行示例(5)匹配100的行,替换为"new line"sed '/100/'c\ "new line" hello.txt输出内容为:1 2 310 20 30new line命令:d将匹配行删除示例(5)删除匹配100的行sed '/100/'d hello.txt输出内容为:1 2 310 20 30命令:s将匹配行替换详细命令为:s/pattern-to-find/replacement-pattern/g pattern-to-find:被替换的串replacement-pattern:替换成这个串g:全部替换,默认只替换匹配到的第一个示例(5)讲100替换为hellosed 's/100/hello/g' hello.txt输出内容为:1 2 310 20 30hello 200 3005.元字符集^:匹配一行的开始$:匹配一行的结束.:匹配某个字符[abc]:匹配指定范围字符6.实用命令匹配以10开头的行,并替换为yes,并输出sed -n 's/^10/yes/p' hello.txt输出内容为:yes 20 30yes0 200 300取出文件中行手的行号与冒号设hello.txt的内容为1:#!/bin/sh2:cat hello.txt3:exitsed -n -e 's/^[0-9]\{1,\}://g'p hello.txt 输出结果为:#!/bin/shcat hello.txtexit。
sed命令快速入门文档
1.简介sed是非交互式的编辑器。
它不会修改文件,除非使用shell重定向来保存结果。
默认情况下,所有的输出行都被打印到屏幕上。
sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。
具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。
sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。
处理完输入文件的最后一行后,sed便结束运行。
sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。
2.定址定址用于决定对哪些行进行编辑。
地址的形式可以是数字、正则表达式、或二者的结合。
如果没有指定地址,sed将处理输入文件的所有行。
地址是一个数字,则表示行号;是“$"符号,则表示最后一行。
例如:sed -n '3p'datafile只打印第三行只显示指定行范围的文件内容,例如:# 只查看文件的第100行到第200行sed -n '100,200p' mysql_slow_query.log复制代码地址是逗号分隔的,那么需要处理的地址是这两行之间的范围(包括这两行在内)。
范围可以用数字、正则表达式、或二者的组合表示。
例如:sed '/^hrwang/a\>hrwang and mjfan are husband\>and wife'datafile#如果在datafile文件中发现匹配以hrwang开头的行,则在该行下面追加hrwang and mjfan are husband and wife6.8 i\ 命令i\ 命令是在当前行的前面插入新的文本。
6.9 c\ 命令sed使用该命令将已有文本修改成新的文本。
6.10 n命令sed使用该命令获取输入文件的下一行,并将其读入到模式缓冲区中,任何sed命令都将应用到匹配行紧接着的下一行上。
sed用法总结及演示
sed⽤法总结及演⽰sed⾏编辑器被称为三剑客之⼀,英⽂全称(Stream EDitor)相对grep匹配功能⽽⾔,sed能将匹配到的内容进⾏⾏编辑。
⽤法:sed [option]... 'script' inputfile...'script'表⽰编“辑命令+地址定界”常⽤选项:-n:不输出模式空间中的内容⾄屏幕;-e script, --expression=script:多点编辑;-f /PATH/TO/SED_SCRIPT_FILE ⽂本中每⾏⼀个编辑命令;-r, --regexp-extended:⽀持使⽤扩展正则表达式;-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原⽂件;不建议编辑命令:⼀般使⽤单引号:‘’d:删除;p:显⽰模式空间中的内容;a \text:在⾏后⾯追加⽂本“text”,⽀持使⽤\n实现多⾏追加;i \text:在⾏前⾯插⼊⽂本“text”,⽀持使⽤\n实现多⾏插⼊;c \text:把匹配到的⾏替换为此处指定的⽂本“text”;w /PATH/TO/SOMEFILE:保存模式空间匹配到的⾏⾄指定的⽂件中;r /PATH/FROM/SOMEFILE:读取指定⽂件的内容⾄当前⽂件被模式匹配到的⾏后⾯;⽂件合并;=:为模式匹配到的⾏打印⾏号;!:条件取反;地址定界!编辑命令;s///:查找替换,其分隔符可⾃⾏指定,常⽤的有s@@@, s###等;替换标记:g:全局替换;w /PATH/TO/SOMEFILE:将替换成功的结果保存⾄指定⽂件中;p:显⽰替换成功的⾏;例:option:-n: 取消默认打印内容到屏幕;~]# sed -n '1,3p' /etc/passwd-e :多点编辑,表⽰且关系,与grep不同的是grep -e表⽰或关系;~]# sed -e 's@^#[[:space:]]*@@' -e '/^UUID/d' /etc/fstab-f:从指定⽂件中读取编辑脚本;⾸先将命令写⼊⼀个脚本中]# echo "1,3p" > sed_sh.txt]# sed -n -f sed_sh.txt /etc/passwd-r: ⽀持使⽤扩展的表达式;~]# echo "/var/log/messages" | sed -r 's@[^/]+/?$@@'-i.bak 原处编辑,并备份⽂件file.bak危险动作备份功能:~]# sed -i.bak -n '1,+2a@' passwd.bak.地址界定:(1)、不给定地址则对全⽂处理;(2)、单地址:#:指定的⾏;~]# sed -n '2p' passwd$:最后⼀⾏;~]# sed -n '$p' passwd/pattern/:⽀持正则表达式,被模式匹配到的所有⾏~]# sed -n '/^ss.*/p' passwd(3)、地址范围:#,# 从当前#⾏到#⾏~]# sed -n '2,5p' /etc/passwd#,+# 从#后加#⾏]# sed -n '2,+5p' /etc/passwd 第⼆⾏⾏后⾯加五⾏/pat1/,/pat2/ 从pat1模式匹配到的⾏⾄pat2匹配到的⾏~]# sed -n '/^sshd/,/^apache/p' /etc/passwd/pat1/,# 从pat1~]# ifconfig | sed -n "/^ens33/,3p"(4)、~:步进第⼀个数为起始⾏后⼀个数字为前进步数1~2:奇数⾏~]# cat /etc/passwd | sed -n "1~2p"2~2:偶数⾏~]# cat /etc/passwd | sed -n "2~2p"编辑命令演⽰:d:删除;~]# sed '3d' passwdp:显⽰模式空间中的内容;a \text:在⾏后⾯追加⽂本“text”,⽀持使⽤\n实现多⾏追加;~]# sed '1~2a\#' passwdi \text:在⾏前⾯插⼊⽂本“text”,⽀持使⽤\n实现多⾏插⼊;~]# sed '1~2i\#' passwdc \text:把匹配到的⾏替换为此处指定的⽂本“text”;~]# sed '1~2c\#' passwdw /PATH/TO/SOMEFILE:保存模式空间匹配到的⾏⾄指定的⽂件中;~]# sed -n '/^apache/w /tmp/sed.txt' passwd~]# cat -n /tmp/sed.txtr /PATH/FROM/SOMEFILE:读取指定⽂件的内容⾄当前⽂件被模式匹配到的⾏后⾯;实现⽂件合并;~]# sed '/^root/r /tmp/sed.txt' passwd=:为模式匹配到的⾏打印⾏号;!:条件取反;~]# sed -n '1,5! p' passwds/ 要替换的字符/替换成的字符/标记:查找替换,其分隔符可⾃⾏指定,常⽤的有s@@@, s###;替换标记:g:全局替换;w /PATH/TO/SOMEFILE:将替换成功的结果保存⾄指定⽂件中;p:显⽰替换成功的⾏;1、删除/boot/grub/grub2.cfg⽂件中所有以空⽩字符开头的⾏的⾏⾸的所有空⽩字符;~]# sed 's@^[[:space:]]\+@@' /etc/grub2.cfg2、删除/etc/fstab⽂件中所有以#开头的⾏的⾏⾸的#号及#后⾯的所有空⽩字符;~]# sed 's@^#[[:space:]]*@@' /etc/fstab3、输出⼀个绝对路径给sed命令,取出其⽬录,其⾏为类似于dirname;~]# echo "/var/log/messages/" | sed 's@[^/]\+/\?$@@'~]# echo "/var/log/messages" | sed -r 's@[^/]+/?$@@'演⽰:⽤bash实现统计访问⽇志⽂件中状态码⼤于等于400的IP数量并排序~]# sed -n -r '/\<40[0-9]\>/p' /var/log/httpd/access_log | cut -d" " -f1 | sort | uniq -c。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-------------------------------------------------------------------------SED单行脚本快速参考(Unix 流编辑器) 2005年12月29日英文标题:USEFUL ONE-LINE SCRIPTS FOR SED (Unix stream editor)原标题:HANDY ONE-LINERS FOR SED (Unix stream editor)整理:Eric Pement - 电邮:pemente[at]northpark[dot]edu 版本5.5 译者:Joe Hong - 电邮:hq00e[at]126[dot]com在以下地址可找到本文档的最新(英文)版本:/sed1line.txt/sed/sed1line.txt其他语言版本:中文 - /sed1line_zh-CN.html捷克语 - /sed1line_cz.html荷语 - /sed1line_nl.html法语 - /sed1line_fr.html德语 - /sed1line_de.html葡语 - /sed1line_pt-BR.html文本间隔:--------# 在每一行后面增加一空行sed G# 将原来的所有空行删除并在每一行后面增加一空行。
# 这样在输出的文本中每一行后面将有且只有一空行。
sed '/^$/d;G'# 在每一行后面增加两行空行sed 'G;G'# 将第一个脚本所产生的所有空行删除(即删除所有偶数行)sed 'n;d'# 在匹配式样“regex”的行之前插入一空行sed '/regex/{x;p;x;}'# 在匹配式样“regex”的行之后插入一空行sed '/regex/G'# 在匹配式样“regex”的行之前和之后各插入一空行sed '/regex/{x;p;x;G;}'编号:--------# 为文件中的每一行进行编号(简单的左对齐方式)。
这里使用了“制表符”# (tab,见本文末尾关于'\t'的用法的描述)而不是空格来对齐边缘。
sed = filename | sed 'N;s/\n/\t/'# 对文件中的所有行编号(行号在左,文字右端对齐)。
sed = filename | sed 'N; s/^/ /; s/ *\(.\{6,\}\)\n/\1 /'# 对文件中的所有行编号,但只显示非空白行的行号。
sed '/./=' filename | sed '/./N; s/\n/ /'# 计算行数(模拟 "wc -l")sed -n '$='文本转换和替代:--------# Unix环境:转换DOS的新行符(CR/LF)为Unix格式。
sed 's/.$//' # 假设所有行以CR/LF结束sed 's/^M$//' # 在bash/tcsh中,将按Ctrl-M改为按Ctrl-Vsed 's/\x0D$//' # ssed、gsed 3.02.80,及更高版本# Unix环境:转换Unix的新行符(LF)为DOS格式。
sed "s/$/`echo -e \\\r`/" # 在ksh下所使用的命令sed 's/$'"/`echo \\\r`/" # 在bash下所使用的命令sed "s/$/`echo \\\r`/" # 在zsh下所使用的命令sed 's/$/\r/' # gsed 3.02.80 及更高版本# DOS环境:转换Unix新行符(LF)为DOS格式。
sed "s/$//" # 方法 1sed -n p # 方法 2# DOS环境:转换DOS新行符(CR/LF)为Unix格式。
# 下面的脚本只对UnxUtils sed 4.0.7 及更高版本有效。
要识别UnxUtils版本的# sed可以通过其特有的“--text”选项。
你可以使用帮助选项(“--help”)看# 其中有无一个“--text”项以此来判断所使用的是否是UnxUtils版本。
其它DOS# 版本的的sed则无法进行这一转换。
但可以用“tr”来实现这一转换。
sed "s/\r//" infile >outfile # UnxUtils sed v4.0.7 或更高版本tr -d \r <infile >outfile # GNU tr 1.22 或更高版本# 将每一行前导的“空白字符”(空格,制表符)删除# 使之左对齐sed 's/^[ \t]*//' # 见本文末尾关于'\t'用法的描述# 将每一行拖尾的“空白字符”(空格,制表符)删除sed 's/[ \t]*$//' # 见本文末尾关于'\t'用法的描述# 将每一行中的前导和拖尾的空白字符删除sed 's/^[ \t]*//;s/[ \t]*$//'# 在每一行开头处插入5个空格(使全文向右移动5个字符的位置)sed 's/^/ /'# 以79个字符为宽度,将所有文本右对齐sed -e :a -e 's/^.\{1,78\}$/ &/;ta' # 78个字符外加最后的一个空格# 以79个字符为宽度,使所有文本居中。
在方法1中,为了让文本居中每一行的前# 头和后头都填充了空格。
在方法2中,在居中文本的过程中只在文本的前面填充# 空格,并且最终这些空格将有一半会被删除。
此外每一行的后头并未填充空格。
sed -e :a -e 's/^.\{1,77\}$/ & /;ta' # 方法1 sed -e :a -e 's/^.\{1,77\}$/ &/;ta' -e 's/\( *\)\1/\1/' # 方法2# 在每一行中查找字串“foo”,并将找到的“foo”替换为“bar”sed 's/foo/bar/' # 只替换每一行中的第一个“foo”字串sed 's/foo/bar/4' # 只替换每一行中的第四个“foo”字串sed 's/foo/bar/g' # 将每一行中的所有“foo”都换成“bar”sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # 替换倒数第二个“foo”sed 's/\(.*\)foo/\1bar/' # 替换最后一个“foo”# 只在行中出现字串“baz”的情况下将“foo”替换成“bar”sed '/baz/s/foo/bar/g'# 将“foo”替换成“bar”,并且只在行中未出现字串“baz”的情况下替换sed '/baz/!s/foo/bar/g'# 不管是“scarlet”“ruby”还是“puce”,一律换成“red”sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g' #对多数的sed都有效 gsed 's/scarlet\|ruby\|puce/red/g' # 只对GNU sed有效# 倒置所有行,第一行成为最后一行,依次类推(模拟“tac”)。
# 由于某些原因,使用下面命令时HHsed v1.5会将文件中的空行删除sed '1!G;h;$!d' # 方法1sed -n '1!G;h;$p' # 方法2# 将行中的字符逆序排列,第一个字成为最后一字,……(模拟“rev”)sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'# 将每两行连接成一行(类似“paste”)sed '$!N;s/\n/ /'# 如果当前行以反斜杠“\”结束,则将下一行并到当前行末尾# 并去掉原来行尾的反斜杠sed -e :a -e '/\\$/N; s/\\\n//; ta'# 如果当前行以等号开头,将当前行并到上一行末尾# 并以单个空格代替原来行头的“=”sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'# 为数字字串增加逗号分隔符号,将“1234567”改为“1,234,567”gsed ':a;s/\B[0-9]\{3\}\>/,&/;ta' # GNU sed sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta' # 其他sed# 为带有小数点和负号的数值增加逗号分隔符(GNU sed)gsed -r ':a;s/(^|[^0-9.])([0-9]+)([0-9]{3})/\1\2,\3/g;ta'# 在每5行后增加一空白行(在第5,10,15,20,等行后增加一空白行)gsed '0~5G' # 只对GNU sed有效sed 'n;n;n;n;G;' # 其他sed选择性地显示特定行:--------# 显示文件中的前10行(模拟“head”的行为)sed 10q# 显示文件中的第一行(模拟“head -1”命令)sed q# 显示文件中的最后10行(模拟“tail”)sed -e :a -e '$q;N;11,$D;ba'# 显示文件中的最后2行(模拟“tail -2”命令)sed '$!N;$!D'# 显示文件中的最后一行(模拟“tail -1”)sed '$!d' # 方法1sed -n '$p' # 方法2# 显示文件中的倒数第二行sed -e '$!{h;d;}' -e x # 当文件中只有一行时,输入空行 sed -e '1{$q;}' -e '$!{h;d;}' -e x # 当文件中只有一行时,显示该行 sed -e '1{$d;}' -e '$!{h;d;}' -e x # 当文件中只有一行时,不输出# 只显示匹配正则表达式的行(模拟“grep”)sed -n '/regexp/p' # 方法1sed '/regexp/!d' # 方法2# 只显示“不”匹配正则表达式的行(模拟“grep -v”)sed -n '/regexp/!p' # 方法1,与前面的命令相对应sed '/regexp/d' # 方法2,类似的语法# 查找“regexp”并将匹配行的上一行显示出来,但并不显示匹配行sed -n '/regexp/{g;1!p;};h'# 查找“regexp”并将匹配行的下一行显示出来,但并不显示匹配行sed -n '/regexp/{n;p;}'# 显示包含“regexp”的行及其前后行,并在第一行之前加上“regexp”所# 在行的行号(类似“grep -A1 -B1”)sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h# 显示包含“AAA”、“BBB”或“CCC”的行(任意次序)sed '/AAA/!d; /BBB/!d; /CCC/!d' # 字串的次序不影响结果# 显示包含“AAA”、“BBB”和“CCC”的行(固定次序)sed '/AAA.*BBB.*CCC/!d'# 显示包含“AAA”“BBB”或“CCC”的行(模拟“egrep”)sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d # 多数sedgsed '/AAA\|BBB\|CCC/!d' # 对GNU sed有效# 显示包含“AAA”的段落(段落间以空行分隔)# HHsed v1.5 必须在“x;”后加入“G;”,接下来的3个脚本都是这样sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'# 显示包含“AAA”“BBB”和“CCC”三个字串的段落(任意次序)sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d'# 显示包含“AAA”、“BBB”、“CCC”三者中任一字串的段落(任意次序)sed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d gsed '/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d' # 只对GNU sed有效# 显示包含65个或以上字符的行sed -n '/^.\{65\}/p'# 显示包含65个以下字符的行sed -n '/^.\{65\}/!p' # 方法1,与上面的脚本相对应sed '/^.\{65\}/d' # 方法2,更简便一点的方法# 显示部分文本——从包含正则表达式的行开始到最后一行结束sed -n '/regexp/,$p'# 显示部分文本——指定行号范围(从第8至第12行,含8和12行)sed -n '8,12p' # 方法1sed '8,12!d' # 方法2# 显示第52行sed -n '52p' # 方法1sed '52!d' # 方法2sed '52q;d' # 方法3, 处理大文件时更有效率# 从第3行开始,每7行显示一次gsed -n '3~7p' # 只对GNU sed有效sed -n '3,${p;n;n;n;n;n;n;}' # 其他sed# 显示两个正则表达式之间的文本(包含)sed -n '/Iowa/,/Montana/p' # 区分大小写方式选择性地删除特定行:--------# 显示通篇文档,除了两个正则表达式之间的内容sed '/Iowa/,/Montana/d'# 删除文件中相邻的重复行(模拟“uniq”)# 只保留重复行中的第一行,其他行删除sed '$!N; /^\(.*\)\n\1$/!P; D'# 删除文件中的重复行,不管有无相邻。