每日励志:做了才有机会说期待
sed非交互编辑命令选项使用
动作之间用;隔开 H剪切,g覆盖复制,G复制到行下,$G最后一行,w另存 a下一行追加,i插入,d删除,c选定行替换,p打印,s替换指定字符,y字符转换
示例:
文本打印
sed -n "7p" #第七行
sed -n "7p;10p" #7和10行
sed -n "7,10p" #7到10行
sed -n "/^A/ p" #以A开头正则放在//中 ,p为打印
sed -n "/p;n/" #奇数行
sed -n "/n;p/" #偶数行
sed -n "5,10{n;p}" #5到10行之间的偶数行
sed -n "5,${n;p}" #5到最后一行
sed -n "4,/the/p" #从第四行到第一个包含the的行
sed -n "4,/the/=" #从第四行到第一个包含the的行,打印行号
sed -n '$=' ip.sh #统计行号
sed -n "/^[a-z]/d" #删除以任意字母开头的行
sed -n "/^$/d" #删除空行
文本替换
sed 's/the/THE/' #将每行中的第一个the替换成大写THE
sed 's/l/L/2' #将每行中的第二个l替换成大写L
sed 's/the/THE/g' #将所有行的the替换成THE
sed 's/o//g' #将所有行的o替换为空
sed 's/^/#/' #在每行行首插入#号
sed '/the/s/^/#/' #在包含the的每行行首插入#
sed 's/$/EOF/' #每行行尾插入字符串EOF
sed '3,5s/the/THE/g' #将3到5行中的所有the替换为THE
sed '/the/s/o/O/g' #将包含the的所有行中的o都替换成O
cat -n test.txt | sed '1,2H;17g' #将1,2行复制到第17行,17行被覆盖
cat -n test.txt | sed '1,2H;17G' #将1,2行复制到第17行下面
cat -n test.txt | sed '1,2{H;d};$G' #将1,2行剪切到最后一行下
sed -n '5,10w 1.txt' test.txt #将test.txt的5到10行另存到1.txt
sed '1a33333' test.txt #在第一行下加入33333
sed '1i33333' test.txt #在第一行上面插入33333
cat -n test.txt | sed '1c44444' #第一行替换为44444
sed '/^[ ]*$/d' #删除纯空行和由空格组成的空行
sed -n '/[^$]/p' #去除空行
sed -n 's/[[:space:]]/n/g'p #把空格替换成换行
#修改文件不加p打印,如果加p打印会出现两行相同
修改tomcat配置文件
sed -n '/^3manager/'p ../conf/logging.properties #匹配以3manager开头的行 sed -i '/^3manager/s/^/#/' /opt/apache-tomcat-8.5.47/conf/logging.properties #匹配以3manager开头的行开头加注释 sed -n '/^#3manager/p' /opt/apache-tomcat-8.5.47/conf/logging.properties #匹配以#3manager开头的行(相当于匹配注释行) sed -n '/^#3manager/s/^#//g'p /opt/apache-tomcat-8.5.47/conf/logging.properties 打印以#3manager开头的行并取消开头#号注释 sed -i '/^#3manager/s/^#//g' /opt/apache-tomcat-8.5.47/conf/logging.properties #同上直接修改 sed -i 's|server.port=8080|server.port=8085|' /opt/apache-tomcat-8.5.47/webapps/ROOT/WEB-INF/classes/application.properties #修改默认端口



