sed
sed命令详解
#!/bin/bash #2018-06-30 06:59:38 # sed Stream Editor文本流编辑 #sed命令的语法格式: #sed的命令格式: sed [option] 'sed command' filename #sed的脚本格式:sed [option] -f 'sed script' filename #sed命令的选项(option): #-n :只打印模式匹配的行. #-e :直接在命令行模式上进行sed动作编辑,此为默认选项 #-f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作 #-r :支持扩展表达式((默认是基础正规表示法语法)) 想少用\ 那你就用-r #-i :直接修改文件内容,而不是输出到终端。 #sed command: [n1[,n2]]function #n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』 #function: #a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~(可以理解为append) #i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); #c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! #d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚; #p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~,即只打印匹配的行. #s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦! # sed 后面接的动作,请务必以 '' 两个单引号括住喔! echo "删除第二行到第4行." nl ips.txt | sed '2,4d' | head -n 5 echo "删除第二行到最后一行" nl ips.txt | sed '2,$d' | head -n 5 echo "删除第4行.如果4行是空的,会往后找到非空行,补充到第4行." nl ips.txt | sed '4d' | head -n 5 echo "在第二行后(亦即是加在第三行)加上『drink tea?』字样!" nl ips.txt | sed '2a drink tea' | head -n 5 echo "要在第二行前" nl ips.txt | sed '2i drink tea' | head -n 5 echo "如果是要增加两行以上,在第二行后面加入两行字,例如『Drink tea or .....』与『drink beer?』" echo "每一行之间都必须要以反斜杠『 \ 』来进行新行的添加喔" nl ips.txt | sed '2a Drink tea or .....\ drink beer?' | head -n 5
应用举例:
sed -in 's/^#//g' tmp.txt 取消全部的#注释。
sed -in '4s/^#//g' tmp.txt 取消第4行的#注释。
sed -in 's/^/#/g' tmp.txt 全部添加#注释。
# echo "aaa bbb "|sed -r 's/(.)/A/'
Aaa bbb
# echo "aaa bbb "|sed 's/\(.\)/A/'
Aaa bbb
sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' 1.txt 以:为分割符,将第一段和最后一段互相替换,\1表示第一个()内容,\2表示第二个()内容,\3表示第三个内容。