第二十一讲——sed流处理 本文共有3157个字,关键词: Sed:stream editor。流编辑器(文本编辑器) Sed是一个行编辑器,是逐行进行处理的 编辑器: 行编辑器 sed 全屏编辑器 vim Sed命令bin不是直接对文本进行处理,而是逐行将文件数据读取到内存中去,而后从内存中完成编辑,并将编辑后的数据输出到屏幕上来,这个内存空间我们称为模式空间(对sed而言)。 因为sed处理文本也不是每一行都处理的,或者说,sed也可以指定仅处理那些行。而这些行也可以像grep那样做模式过滤,符合模式的处理,不符合的不处理,处理结束后将模式空间的内容打印至屏幕。Sed本身也是一种语言,仅对文本做编辑。 sed [option] {script sed 脚本 } [input file] sed ‘adresscommand’ file……(文件可以有多个) 地址 命令 连写,中间无空格 符合adress的行执行以下的命令 Command: d 删除符合条件的行(显示不匹配的行,默认全部输出) p 打印符合条件的行,p命令是特殊命令的处理结果,符合条件打印,而sed默认会将模式空间中的内容打印,所以匹配的行会打印两遍。 -n 只打印符合条件的行(默认全部输出) a\”string” 在指定的行后面追加新行(匹配行的下一行),内容为string \n 换行,可在匹配行后添加新行 i\string 在指定行的前面添加新行,内容为string r filedir 将指定文件中的内容添加至符合条件的行处,只要有符合的行就执行,并非只执行一次。 w filename 将指定范围内的内容另存至指定的文件中。 s 查找并替换,s/模式/替换的内容/g|i 模式(parttern),可使用正则 s默认是匹配每一行的第一个,末尾加修饰符 g(全局替换,整行替换) i(查找时忽略大小写) 分隔符可以是///,也可以是###,还可以是@@@等等可以再特殊查找下避免混淆。 Sed 中可以使用后向引用,使用转义后的括号分组,然后引用括号内的内容。 Sed ‘@\(string\)@\1@g’ 在查找替换中,引用模式匹配的整个串使用 & 字符,引用前面匹配的字符串。 -n 静默模式,不再提示模式空间中的内容。 -i 直接修改源文件,这是个很危险的操作。 -f 指定一个sed脚本。 -e script -e script 可以执行多个sed命令 -r 使sed支持扩展的正则表达式,sed默认只支持基本的正则表达式。 使用sed’命令提取文件/目录的父目录: echo /passwd/1/2/3/4/5 |sed -r ‘s@^(/.*/)[^/]+/?@\1@g’ id命令: id –n –u 用户的用户名username id –n –g 用户的组名 groupname bc计算器: bc命令进入计算界面 scale=2 保留两位精度 可以使用echo “scal=2;10/2” |bc 使用echo命令将参数送入bc计算器 还可以使用 bc <<< “scal=2;100/3” 类似于输入重定向。 For循环 for 变量 in 列表 do 循环体 done 列表为一大堆数,for语句会对这一堆数进行遍历。 {1..100} 整数列表,1-100的整数 seq命令 seq 起始数 步进长度 结束数 结束数未必是列表中一定出现的,因步进长度而定。 起始数为1,步进长度为1时可以省略 Bash不支持浮点运算。 declare –i sum 声明一个整数变量 declare –x 变量 声明一个变量为环境变量 类似于export 在shell中键入export env printenv 都可以打印当前环境的变量声明。 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2016-12-21 评论 1513 次浏览