Home » IDC云服务 » linux学习-sed,sort,uniq,join,cut,paste,split
linux学习–sed,sort,uniq,join,cut,paste,split
linux学习–sed,sort,uniq,join,cut,paste,split
将 /abc/1231232 替换成 ?/abc
sed -e ‘s/abc\/[0-9]*/abc/g’ ?1.txt
或者
sed -e ‘s/\/[abc]\+//g’ 1.txt
+在linux 里面是特殊字符,所以需要用\+ 联合 [0-9] 表示 1或多个数字
/ 需要进行转义 ?用 \/表示
11月5日 linux学习–sed,sort,uniq,join,cut,paste,split ==============================sed========================== 1、调用sed ?调用s e d有三种方式:在命令行键入命令;将s e d命令插入脚本文件,然后调用s e d;将s e d 命令插入脚本文件,并使s e d脚本可执行。 ?使用s e d命令行格式为: ? sed [选项] s e d命令? 输入文件。 ?记住在命令行使用s e d命令时,实际命令要加单引号。s e d也允许加双引号 ? ?使用s e d脚本文件,格式为: ? sed [选项] -f sed脚本文件输入文件 ?? ?要使用第一行具有s e d命令解释器的s e d脚本文件,其格式为 ? sed脚本文件 [选项] 输入文件 ? ?sed选项如下: ?n 不打印;s e d不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以 ?用来打印编辑行。 ?c 下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条s e d命令, ?此选项无用,但指定它也没有关系。 ?f 如果正在调用s e d脚本文件,使用此选项。此选项通知s e d一个脚本文件支持所有的s e d ?命令,例如:sed -f myscript.sed input_file,这里m y s c r i p t . s e d即为支持s e d命令的文件。 2、使用sed在文件中查询文本的方式 ?s e d浏览输入文件时,缺省从第一行开始,有两种方式定位文本: ?1) 使用行号,可以是一个简单数字,或是一个行号范围。 ?2) 使用正则表达式 ??? 使用s e d在文件中定位文本的方式 ? x x为一行号,如1 ? x , y 表示行号范围从x到y,如2,5表示从第2行到第5行 ? / p a t t e r n / 查询包含模式的行。例如/ d i s k /或/[a-z]/ ? / p a t t e r n / p a t t e r n / 查询包含两个模式的行。例如/ d i s k / d i s k s / ? p a t t e r n / , x 在给定行号上查询包含模式的行。如/ r i b b o n / , 3 ? x , / p a t t e r n / 通过行号和模式查询匹配行。3 . / v d u / ? x , y ! 查询不包含指定行号x和y的行。1 , 2 ! 3、基本sed编辑命令 ??? sed编辑命令 ? p 打印匹配行 ? = 显示文件行号 ? a \ 在定位行号后附加新文本信息 ? i \ 在定位行号后插入新文本信息 ? d 删除定位行 ? c \ 用新文本替换定位文本 ? s 使用替换模式替换相应模式 ? r 从另一个文件中读文本 ? w 写文本到一个文件 ? q 第一个模式匹配完成后推出或立即推出 ? l 显示与八进制A S C I I代码等价的控制字符 ? { } 在定位行执行的命令组 ? n 从另一个文件中读文本下一行,并附加在下一行 ? g 将模式2粘贴到/pattern n/ ? y 传送字符 ? n 延续到下一输入行;允许跨行的 4、sed和正则表达式 ? sed识别任何基本正则表达式和模式及其行匹配规则 5、基本sed编程举例 ? 使用p(rint)显示行: ? p r i n t命令格式为[ a d d r e s s [,a d d r e s s ] P。显示文本行必须提供s e d命令行号。 ?? sed -n ‘2p’ quote.txt ? 显示从2到4行 ?? sed -n ‘2,4p’ url_access_detail.txt ?? ? 打印模式: ?? sed -n ‘/1028f/p’ url_access_detail.txt? ?? sed -n ‘/\/\?1028f/p’ url_access_detail.txt? ??? ? 使用模式和行号进行查询: ?? 只在第4行查询? ??? sed -n ‘4,/\/\?1028f/’p url_access_detail.txt ???? ? 显示整个文件: ?? 只需将行范围设为第一行到最后一行1 , $。$意为最后一行: ?? sed -n ‘1,$p’ quote.txt ??? ? 任意字符: ??? 匹配任意字母,后跟任意字母的0次或多次重复,并以i n g结尾,模式为/ . * i n g /。可以使用 ?这个模式查询以i n g结尾的任意单词 ?? sed -n ‘/.*ing/’p quote.txt ??? ? 打印行号: ? 要打印行号,使用等号=。打印模式匹配的行号,使用格式/pattern/=。 ?? sed -e ‘/music/=’ quote.txt ? (不过这些好像在linux里面不支持) ?? ? 附加文本: ? sed -n? ‘/1028f/’p? url_access_detail.txt |sed ‘/h/ a\then haha’ ? 在前面添加,用i\ ? 替换,用c\ ? 删除,用d\ 6、替换文本 ? 替换命令用替换模式替换指定模式,格式为: ?? [ a d d r e s s [,address]] s/ pattern-to-find /replacement-pattern/[g p w n] ? s选项通知s e d这是一个替换操作,并查询p a t t e r n – t o – f i n d,成功后用r e p l a c e m e n t – p a t t e r n替 ?换它。 ? g 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。 ? p 缺省s e d将所有被替换行写入标准输出,加p选项将使- n选项无效。- n选项不打印输出 ?结果。 ? w 文件名使用此选项将输出定向到一个文件。 ?? sed ‘s/haha/hehe/g w a.out’ quote.txt ??? ? 使用替换修改字符串: ? 如果要附加或修改一个字符串,可以使用( &)命令,&命令保存发现模式以便重新调用 ?它,然后把它放在替换字符串里面。这里给出一个修改的设计思路。先给出一个被替换模式, ?然后是一个准备附加在第一个模式后的另一个模式,并且后面带有&,这样修改模式将放在 ?匹配模式之前。例如, s e d语句s/nurse/”Hello”&/p 的结果如下 ? sed ‘s/nurse/”Hello” &am