10 Dec 2014
windows下的文件换行符是”\r\n”,而linux下文件换行符是”\n”
# 切换方法 # windows文件转换成linux文件 sed "s/\r//g" filename
-i 和 -r 某些情况下不能连起来写成-ir# 有无-r的区别 sed 's/r(oo|aa)t/good/g' test.txt root:x:0:0:root:/root:/bin/bash raat:x:0:0:raat:/raat:/bin/bash sed -r 's/r(oo|aa)t/good/g' test.txt good:x:0:0:good:/good:/bin/bash good:x:0:0:good:/good:/bin/bash # -ir时无效 sed -ir 's/r(oo|aa)t/good/g' test.txt cat test.txt root:x:0:0:root:/root:/bin/bash raat:x:0:0:raat:/raat:/bin/bash # -i -r分开写的时候生效 sed -i -r 's/r(oo|aa)t/good/g' test.txt cat test.txt good:x:0:0:good:/good:/bin/bash good:x:0:0:good:/good:/bin/bash
sed处理文本是以行为单位处理的
# 将搜索出来的5输出来两次 sed '/5/p' test.txt 1 2 3 4 5 5 6 ## n可以让sed暂存上一行的信息 # n的含义是next,所以搜索出来5的下一行被打印两次,所以有两个6 sed '/5/{n;p}' test.txt 1 2 3 4 5 6 6 ## N可以上sed暂存下一行,将两行合并成一条信息来处理 # N将搜索出来的5与下一行6合并在一起,打印出来 sed '/5/{N;p}' test.txt 1 2 3 4 5 6 5 6
# 删除n到m行的内容 sed 'n,md' test.txt # 第一行: ^ # 最后一行: $ # 通过匹配删除内容 sed ‘/regex-start/,/regex-end/d’ test.txt