当前位置: 首页 > Linux

技巧:sed教程-linux命令

时间:2023-04-07 01:12:02 Linux

前言sed的全称是streameditor,是一个用于文本处理的流编辑器,支持正则表达式。当sed处理文本时,它一次处理一行内容。关注公众号,一起交流,微信搜索:潜移默化到github地址,感谢stars语法。sed命令处理的内容是模式空间中的内容,而不是直接处理文件内容。如果加上参数i,则可以直接修改文件内容。例子:sed-i's/originalstring/newstring/'/home/test.txtsed[-nefrparameter][function][filePath]选项及参数说明-n使用静默模式。在正常的sed使用中,输入数据输出到屏幕。但是如果加上-n参数,就不会显示了。如果后面是p标志,会列出sed特殊处理的行-e直接在命令行界面编辑sed动作,执行多个子命令-f把sed动作写在文件里,-ffilename执行sed脚本文件的action-rsedaction支持扩展正则表达式的语法-i直接修改读取文件选项的内容-n,添加-n选项设置为安静模式,即默认不会打印信息输出,除非子命令指定了printp选项,否则只会打印匹配修改的行------两行都会打印----server11:~/test#echo-e'hello\nworld'|sed's/hello/csc/'cscworld----不打印任何行-----server11:~/test#echo-e'hello\nworld'|sed-n's/hello/csc/'----打印匹配行-----server11:~/test#echo-e'hello\nworld'|sed-n's/hello/csc/p'csc选项-e,多个子命令连续运行echo-e'helloworld'|sed-e's/hello/csc/'-e's/world/lwl/'结果:csclwl选项-i,直接修改读取文件内容server11:~/test#catfile.txthelloworldserver11:~/test#sed's/hello/lwl/'file.txtlwlworldserver11:~/test#catfile.txthelloworld----加参数i直接修改文件内容----server11:~/test#sed-i's/hello/lwl/'file.txtlwlworldserver11:~/test#catfile.txtlwlworld选项-f,执行文件脚本sed.script脚本内容:s/hello/csc/s/world/lwl/------回显“你好世界”|sed-fsed.script结果:csclwl选项-r,默认只支持基本正则表达式,如果需要支持扩展正则表达式,需要加上-recho"helloworld"|sed-r's/(hello)|(world)/csc/g'csccscfunctionexpression:[n1[,n2]]functionor/{pattern}/functionn1,n2:可选,一般表示“选择行数执行动作”,例如,如果函数需要在10到20行之间执行,则表示为10,20[function]如果需要使用正则表达式匹配字符串,可以使用/{pattern}/来匹配test.txt的内容111222333444-----删除所有不在第2行和第3行之间的行----------server11:~#sed-i'2,3!d'test.txtserver11:~#cattest.txt222333------正则表达式匹配------------server11:~#echo'clswcl.txt'|sed-nr'/.*/p'clswcl.txt///{pattern}/=/.*/function有如下选项添加函数说明a:a后面可以跟字符串,这些字符串会出现在anewline(当前下一行)iinsert:i后面可以跟字符串,这些字符串会出现在新行(当前上一行)c替换:c后面可以跟字符串,这些字符串可以替换行n1和n2之间ddelete:因为是删除,所以d后面一般不会跟任何东西pprint:也就是打印出一条选中的数据通常p将使用参数sed-n运行s替换:替换可以直接完成!通常这个s动作可以用正则表达式来匹配!例如:1,20s/old/new/gfunction:-a,在sed行之后插入一个新行-i'/specificstring/anewlinestring'fileNamefunction:-i,在sed行之前插入一个新行-i'/specificstring/inewlinestring'fileName功能:-c,修改指定内容行sed-i'/specificstring/ccsclwl'fileName功能:-d,删除特定字符串sed-i'/specificcharacterString/d'fileNameseds子命令:s/{pattern}/{replacement}/{flags}如果{pattern}包含正则表达式,需要加-r如果{pattern}有分组,{replacement}in"\n”代表第n组,“&”代表匹配的整个字符串。有关详细信息,请参见示例标志的参数,如下所示。标志描述n可以是1-512,表示第n次出现被替换gglobalchangep打印模式空间的内容wfilewritestoafilefileexampleserver11:~#echo-e'hello1112world'|sed-r's/([a-z]+)([0-9]+)([a-z]+)/&/'hello1112worldserver11:~#echo-e'hello1112world'|sed-r's/([a-z]+)([0-9]+)([a-z]+)/\3\2\1/'world1112hello参考文章sed-i命令详解及进入攻略