sed 命令详解 很全的
Linux sed命令实例详解功能说明:利用script来处理文本文件。
语法:sed [-hnV][-e]补充说明:sed可依照script的指令,来处理、编辑文本文件。
参数:-e<script>或—expression=<script> 以选项中指定的script来处理输入的文本文件。
-f文件>或—file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或—help 显示帮助。
-n或—quiet或--silent 仅显示script处理后的结果。
-V或—version 显示版本信息。
# sed -e 's/123/1234/' a.txt将a.txt文件中所有行中的123用1234替换(-e表示命令以命令行的方式执行;参数s,表示执行替换操作)# sed -e '3,5 a4' a.txt将a.txt文件中的3行到5行之间所有行的后面添加一行内容为4的行(参数a,表示添加行,参数a后面指定添加的内容)# sed -e '1 s/12/45/' a.txt把第一行的12替换成45sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`批量处理通过grep搜索出来的所有文档,将这些文档中所有的oldstring用newstring 替换(-i参数表示直接对目标文件操作)$ sed -n 's/^test/mytest/p' example.file(-n)选项和p标志一起使用表示只打印那些发生替换的行。
也就是说,如果某一行开头的test被替换成mytest,就打印它。
(^这是正则表达式中表示开头,该符号后面跟的就是开头的字符串)(参数p表示打印行)$ sed 's/^wangpan/&19850715/' example.file表示被替换换字符串被找到后,被替换的字符串通过&符号连接给出的字符串组成新字符传替换被替换的字符串,所有以wangpan开头的行都会被替换成它自已加19850715,变成wangpan19850715$ sed -n 's/\(love\)able/\1rs/p' example.filelove被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
需要将这条命令分解,s/是表示替换操作,\(love\)表示选中love字符串,\(love\)able/表示包含loveable的行,\(love\)able/\l表示love字符串标记为1,表示在替换过程中不变。
rs/表示替换的目标字符串。
这条命令的操作含义:只打印替换了的行$ sed 's#10#100#g' example.file不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。
表示把所有10替换成100。
$ sed -n '/love/,/unlove/p' example.file只打印包含love字符串行到包含unlove字符串行之间的所有行(确定行的范围就是通过逗号实现的)$ sed -n '5,/^wang/p' example只打印从第五行开始到第一个包含以wang开始的行之间的所有行$ sed '/love/,/unlove/s/$/wangpan/' example.file对于包含love字符串的行到包含unlove字符串之间的行,每行的末尾用字符串wangpan 替换。
字符串$/表示以字符串结尾的行,$/表示每一行的结尾,s/$/wangpan/表示每一行的结尾添加wangpan字符串$ sed -e '11,53d' -e 's/wang/pan/' example.file(-e)选项允许在同一行里执行多条命令。
如例子所示,第一条命令删除11至53行,第二条命令用pan替换wang。
命令的执行顺序对结果有影响。
如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。
(参数d,表示删除指定的行) $ sed --expression='s/wang/pan/' --expression='/love/d' example.file一个比-e更好的命令是--expression。
它能给sed表达式赋值。
$ sed '/wangpan/r file' example.filefile里的内容被读进来,显示在与wangpan匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。
参数r,表示读出文件,后面空格紧跟文件名称$ sed -n '/test/w file' example.file在example.file中所有包含test的行都被写入file里。
参数w,表示将匹配的行写入到指定的文件file中$ sed '/^test/a\oh! My god!' example.file'oh! My god!'被追加到以test开头的行的后面,sed要求参数a后面有一个反斜杠。
$ sed '/test/i\oh! My god!' example.file'oh! My god!'被追加到包含test字符串行的前面,参数i表示添加指定内容到匹配行的前面,sed要求参数i后面有一个反斜杠$ sed '/test/{ n; s/aa/bb/; }' example.file如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb。
参数n,表示读取匹配行的下一个输入行,用下一个命令处理新的行而不是匹配行。
Sed要求参数n后跟分号$ sed '1,10y/abcde/ABCDE/' example.file把1—10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。
参数y,表示把一个字符翻译为另外的字符(但是不用于正则表达式)$ sed -i 's/now/right now/g' test_sed_command.txt表示直接操作文件test_sed_command.txt,将文件test_sed_command.txt中所有的now 用right now替换。
参数-i,表示直接操作修改文件,不输出。
$ sed '2q' test_sed_command.txt在打印完第2行后,就直接退出sed。
参数q,表示退出$ sed -e '/old/h' -e '/girl-friend/G' test_sed_command.txt首先了解参数h,拷贝匹配成功行的内容到内存中的缓冲区。
在了解参数G,获得内存缓冲区的内容,并追加到当前模板块文本的后面。
上面命令行的含义:将包含old字符串的行的内容保存在缓冲区中,然后将缓冲区的内容拿出来添加到包含girl-friend字符串行的后面。
隐含要求搜集到缓冲区的匹配行在需要添加行的前面。
$ sed -e '/test/h' -e '/wangpan/x' example.file将包含test字符串的行的内容保存在缓冲区中,然后再将缓冲区的内容替换包含wangpan字符串的行。
参数x,表示行替换操作。
隐含要求搜集到缓冲区的匹配行在需要被替换行的前面。
linux sed命令使用总结(转)比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做:sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules`解释一下:-i 表示inplace edit,就地修改文件-r 表示搜索子目录-l 表示输出匹配的文件名这个命令组合很强大,要注意备份文件。
(1)sed 'y/1234567890/ABCDEFGHIJ/' test_sedsed 'y/1234567890/ABCDEFGHIJ/' filenameABCDEFGHIJBCDEFGHIJACDEFGHIJABDEFGHIJABC注意变换关系是按两个list的位置对应变换其中:test_sed的内容是:1234567890234567890134567890124567890123(2)替换每行所有匹配sed 's/01/Ab/g' test_sed123456789023456789Ab3456789Ab2456789Ab23注意:第一行的0,1没有分别替换为A,b删除:d命令∙$ sed '2d' example-----删除example文件的第二行。
∙$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。
∙$ sed '$d' example-----删除example文件的最后一行。
∙$ sed '/test/'d example-----删除example文件所有包含test 的行。
替换:s命令∙$ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。
如果没有g标记,则只有每行第一个匹配的test被替换成mytest。
∙$ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。
也就是说,如果某一行开头的test被替换成mytest,就打印它。
∙$ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。
所有以192.168.0.1开头的行都会被替换成它自已加 localhost,变成192.168.0.1localhost。
∙$ sed -n 's/\(love\)able/\1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
sed 命令详解 很全的
Linux sed命令实例详解功能说明:利用script来处理文本文件。
语法:sed [-hnV][-e]补充说明:sed可依照script的指令,来处理、编辑文本文件。
参数:-e<script>或—expression=<script> 以选项中指定的script来处理输入的文本文件。
-f文件>或—file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或—help 显示帮助。
-n或—quiet或--silent 仅显示script处理后的结果。
-V或—version 显示版本信息。
# sed -e 's/123/1234/' a.txt将a.txt文件中所有行中的123用1234替换(-e表示命令以命令行的方式执行;参数s,表示执行替换操作)# sed -e '3,5 a4' a.txt将a.txt文件中的3行到5行之间所有行的后面添加一行内容为4的行(参数a,表示添加行,参数a后面指定添加的内容)# sed -e '1 s/12/45/' a.txt把第一行的12替换成45sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`批量处理通过grep搜索出来的所有文档,将这些文档中所有的oldstring用newstring 替换(-i参数表示直接对目标文件操作)$ sed -n 's/^test/mytest/p' example.file(-n)选项和p标志一起使用表示只打印那些发生替换的行。
也就是说,如果某一行开头的test被替换成mytest,就打印它。
(^这是正则表达式中表示开头,该符号后面跟的就是开头的字符串)(参数p表示打印行)$ sed 's/^wangpan/&19850715/' example.file表示被替换换字符串被找到后,被替换的字符串通过&符号连接给出的字符串组成新字符传替换被替换的字符串,所有以wangpan开头的行都会被替换成它自已加19850715,变成wangpan19850715$ sed -n 's/\(love\)able/\1rs/p' example.filelove被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
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命令详解
Linux中的sed命令注意:在使用sed时,它的AddressCommand这一段需要使用单引号引起来,然后,如果地址包含了模式,则使用//把模式框住。
在使用s做替换时,因为已经使用了///,则不需要再增加//。
s/OLD/NEW/s@@@s###注意:只有OLD那里可以使用正则表达式,NEW那里可以调用分组,以及使用字符串,但不能使用正则表达式。
grep, sed(流编辑器), awk注意grep中匹配的模式不要加//,而在sed中使用模式的话要加//才是正确的格式grep: 对匹配模式的内容显示到屏幕,默认显示匹配模式的行sed: 对匹配模式的内容进行操作,默认显示所有的行sed基本用法:sed: Stream EDitor 行编辑器(vi :全屏编辑器)sed: 模式空间默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕;sed [options] 'AddressCommand' file ...-n: 静默模式,不再默认显示模式空间中的内容-i: 直接修改原文件-e SCRIPT -e SCRIPT:可以同时执行多个脚本-f /PATH/TO/SED_SCRIPTsed -f /path/to/scripts file-r: 表示使用扩展正则表达式Address:1、StartLine,EndLine比如1,100$:最后一行2、/RegExp//^root/3、/pattern1/,/pattern2/第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行4、LineNumber指定的行5、StartLine, +N从startLine开始,向后的N行;Command:d: 删除符合条件的行;例:删除/etc/fstab中以#开头的行,即此文件中以#开头的行不再显示在屏幕上,而文件本身不做修改[root@Centostmp]# sed '/^#/d' fstabp: 显示符合条件的行;例:显示fstab文件中,包含了fs做为词尾,并且后面有空白字符的行,并且只显示符合条件的行,使用静默模式[root@Centostmp]# sed -n '/fs\>[[:space:]]/p' fstabtmpfs /dev/shmtmpfs defaults 0 0sysfs /syssysfs defaults 0 0a \string: 在指定的行后面追加新行,内容为string\n:可以用于换行例:在fstab文件的第一行后面添加一行,添加的内容为我是刘庆hahahahahahahhaha[root@Centostmp]# sed '1a\我是刘庆hahahahaha' fstabi \string: 在指定的行前面添加新行,内容为string例:在fstab文件的第一行后面添加一行,添加的内容为我是刘庆hahahahahahahhaha[root@Centostmp]# sed '1i\我是刘庆hahahahah' fstabr FILE: 将指定的文件的内容添加至符合条件的行处例:在fstab文件的第一行后面将/etc/passwd的内容添加[root@Centostmp]# sed '1r /etc/passwd' fstabw FILE: 将地址指定的范围内的行另存至指定的文件中;例:将fstab中以#开头的行保存到a.txt[root@Centostmp]# sed '/^#/w a.txt' fstabs/pattern/string/修饰符: 查找并替换,默认只替换每行中第一次被模式匹配到的字符串加修饰符g: 全局替换i: 忽略字符大小写s///: s###, s@@@\(\), \1, \2例:查找fstab文件中,包含了fs为词尾的行,将其替换成成FS[root@Centostmp]# sed 's/fs\>/FS/g' fstab此命令中g表示全局的意思,即加g这个修饰符以后,对整个行内符合条件的字符串进行替换,如果不加g只替换每行第一个字符串l..e: like-->likerlove-->loverlike-->Likelove-->Love&: 引用模式匹配整个串例:将文件test中字符 like 换成liker love 换成lover[root@Centostmp]# sed 's/\(l..e\)/\1r/' testI liker computer!shelover me![root@Centostmp]# sed 's/l..e/&r/' testI liker computer!注意:使用\(\)再后向引用时可灵活变通,但&只能匹配整个条件,而不是条件的一部分,比如,将like lover的l换成大写的Lsed的命令a : 新增,a\string a的后面可以接字符串,而这些字符串会在新的一行出现,即目前行的下一行c : 替换,c\string c后面可以接字符串,这些字符串可以替换n1,n2之间的行d : 删除,因为是删除,所以d后面通常不接任何参数i : 插入,i后面可以接字符串,这些字符出现在当前行的上一行p : 打印,也就是将某个选择的数据打印出来,一般与选项 -n一起使用,-n是静默显示,即只在屏幕上显示符合条件的行s : 替换,可以直接进行替换工作。
sed命令精讲
sed命令精讲sed 命令精讲sed Stream Editor语法格式:sed [options] [sed-commands] [input-file]1.注意sed和后⾯的选项之间⾄少有⼀个空格2.sed-commands既可以是单个sed命令,也可以是多个sed命令的组合。
3.input-file是可选项,sed还能够从标准输⼊如管道中获取输⼊命令执⾏流程:sed从⽂件或管道中读取⼀⾏,处理⼀⾏,输出⼀⾏;再读取⼀⾏,再处理⼀⾏,再输出⼀⾏⾏。
1.单⾏增加(a)在第⼆⾏后追加⼀⾏内容sed '2a 106,dandan,CSO' person.txt在第⼆⾏的位置插⼊⼀⾏内容,原来的⾏往后移(i)sed '2i 106,dandan,CSO' person.txt2.多⾏增加sed '2a 106,lisi,CEE\n107,zs,CLS' person.txtsed -i '13i Port 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no' /etc/ssh/sshd_config 3.指定执⾏的范围sed 软件可以对单⾏或多⾏进⾏处理。
如果在sed命令前⾯不指定地址范围,那么默认会匹配所有⾏。
10{sed-commands} 对第10⾏操作10,20{sed-commands} 对第20⾏操作,包括第10,20⾏1~2{sed-commands} 对1,3,5,7,...⾏操作10,${sed-commands} 对10⾏到最后⼀⾏进⾏操作/oldboy/{sed-commands} 对匹配到oldboy的⾏进⾏操作/oldboy/,/alex/{sed-commands} 对匹配到oldboy和alex的⾏进⾏操作/oldboy/,${sed-commands} 对匹配到oldboy的⾏到最后⼀⾏操作/oldboy/,10{sed-commands} 对匹配到oldboy的⾏到第10⾏进⾏操作1,/alex/{sed-commands} 对第⼀⾏到匹配到alex的⾏操作/oldboy/,+2{sed-commands} 对匹配oldboy的⾏到其后的2⾏操作4.删除操作(d)sed '2,3d' person.txt 删除第2-3⾏sed '1~2d' person.txt 删除奇数⾏sed '1,+2d' person.txt 删除第⼀⾏和后两⾏5.改1.按⾏替换(c ⽤新⾏取代旧⾏)sed '2c 110,madd,CSD' person.txt2.⽂本替换s:单独使⽤将每⼀⾏中第⼀处匹配的字符串进⾏替换g:每⼀⾏进⾏全部替换。
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的手册页。
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常用参数
sed是一种强大的文本处理工具,常用于对文本进行搜索、替换、删除等操作。
下面是一些sed常用参数及其功能的介绍。
1. -e或--expression:用于指定sed的编辑指令。
可以使用多个-e参数来指定多个编辑指令。
2. -f或--file:用于指定sed的编辑脚本文件。
3. -n或--quiet或--silent:只输出经过编辑的行,不输出未经编辑的行。
4. -i或--in-place:直接修改文件内容,而不是将结果输出到标准输出。
5. -r或--regexp-extended:使用扩展正则表达式进行匹配。
6. -s或--separate:将输入文件视为多个独立的数据流进行处理。
7. -u或--unbuffered:即时输出,不缓冲。
8. -z或--null-data:将输入文件视为以null字符分隔的数据流进行处理。
9. -y或--squelch或--silent:禁止自动打印模式空间的内容。
10. -l或--line-length:指定行的最大长度。
11. -b或--binary:以二进制模式打开文件。
通过灵活使用这些参数,我们可以利用sed来处理各种文本文件。
例如,我们可以使用-e参数来指定多个编辑指令,对文件中的特定字符串进行替换;使用-n参数来只输出经过编辑的行,忽略其他行;
使用-i参数直接修改文件内容,而不是输出到标准输出等。
sed是一款非常实用的文本处理工具,通过灵活运用其常用参数,我们可以方便地对文本进行各种操作,提高工作效率。
linux之sed命令详解
linux之sed命令详解sed是⼀个⾮交互式⽂本编辑器,它可以对⽂本⽂件和标准输⼊进⾏编辑,标准输⼊可以来⾃键盘输⼊,⽂件重定向,字符串,变量,或者是管道的⽂本。
并将其复制到缓冲区,然后读取命令⾏的命令,对此命令要求的⾏号进⾏编辑。
⽤法:sed共有三种⽤法:①直接在命令⾏中使⽤ sed [选项] 'sed命令' 输⼊⽂件②将sed命令写⼊脚本⽂件中,使⽤sed命令调⽤ sed [选项] -f sed脚本⽂件输⼊⽂件③将sed命令写⼊脚本⽂件中,并设置为可执⾏ ./sed 脚本⽂件输⼊⽂件其中第③种的脚本⽂件中需要使⽤#!符号开头。
sed常⽤的选项-n:不打印所有的⾏到标准输出,只输出那些被命令影响到的⾏-e:表⽰将下⼀个字符串解析为sed编辑命令,如果只有⼀个编辑命令,则-e可以省略-f:表⽰正在调⽤sed脚本⽂件-r:表⽰⽀持延伸型的正则表⽰法(默认只⽀持基础正则表⽰法)-i:直接修改读取的⽂件内容,⽽不是通过屏幕输出。
sed命令sed命令通常由两部分组成。
⽂本定位和sed编辑命令。
⽂本定位对⽂本的部分⾏进⾏抽取,编辑命令对抽取的⾏进⾏编辑。
sed定位⽅式sed提供了两种定位⽅式:①通过⾏号,指定⼀⾏或者⾏号范围②使⽤正则表达式定位⽅式:x:x为指定⾏号x,y:指定从x到y的⾏号范围/pattern/:查询包含模式的⾏/pattern/pattern/:查询包含两个模式的⾏x,/pattern/:从x⾏到patter模式匹配的⾏之间x,y!:查询不包括x和y⾏号的⾏sed编辑命令p:打印匹配⾏=:打印⽂件⾏号a:在定位⾏号之后追加⽂本信息i:在定位⾏号之前插⼊⽂本信息d:删除定位⾏c:使⽤新⽂本替换⽂本⾏s:使⽤替换模式替换相应模式r:从另⼀个⽂件中读取⽂本w:将⽂本写⼊到⼀个⽂件y:变换字符q:第⼀个模式匹配后退出{}:在定位⾏执⾏命令组n:读取下⼀个输⼊⾏,⽤下⼀个命令处理新的⾏说了这么多,我们就先来体验⼀下:[fuwh@localhost 15:11 ~/stu]$ nl test1 first line2 second line3 l i n e4 what is this[fuwh@localhost 15:11 ~/stu]$ sed '2d' testfirst linel i n ewhat is this这就是sed的⼀个基本使⽤⽅式。
sed命令详解
drink tea
or coffee
ruby is me,welcome to my blog.
end
代替一行或多行
[root@localhost ruby] # sed '1c Hi' ab #第一行代替为Hi
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由萤幕输出。
常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
如何只替换第2个\t?
(4)
行末空格
sed 's/[ \t]*$//g'
(5)替找空格:
echo "abc 23" | sed 's/[ ]\{2,\}/ /' 把多个空格替换成一个空格
(3)
如果你想在每行的80个字符后加一个冒号,你可写:
sed ‘s/./&:/80’ < file > new
sed 's/.*/&-/' <20.txt >new.txt
用&作为匹配的串
有时你想查找一个模式,然后加上几个字符,比如在匹配的串前后加上括号。如果你是找一个确定的字符串,还是比较简单的,如下即可:
sed ‘s/abc/(abc)/’ < old > new
如果你不是非常清楚你将找到的是串是什么,那你应该如果来利用你找到的串做某种替换呢?
linux之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命令的基本用法和常见参数,并以中括号为主题给出了具体的使用实例。
