Sed的高级命令

1   -{}多个sed命令,用;分开比如  nl  文件名  |  sed  ’{你要从第几行删除,到删除到第几行d;s/替换前的内容/替换后的内容/}’

2   -n读取下一个输入行,用下一个命令进行处理  nl  文件名 |  sed  -n  ’{np}’   打印文件中所有偶数的行

3   -&替换固定的字符串  sed  ’ s/原来的字符串/&后来的字符串/’  后面修改的字符串一定要跟原来的字符串有关系才能使用&,如s/w/w123/修改成s/w/&123/

4   案例一:大小写转换,将用户名的首字母转换成大写

   Sed  ’s/^[a-z_-]\+/\u&/’  文件名

5   案例二:大小写转换,将文件夹下的.txt文件名转换成大写字母

   Ls *.txt  |  sed  ’s/^\w\+/\U&/’

6   案例三:数据筛选,获取文件中的USER、UID和GID

   USER   sed  ’s/\(^[a-z_-]\+\):.*$/\1/’  文件名

    USER和UID   sed  ’s/\(^[a-z_-]\+\):x:\([0-9]\+\):.*$/\1  \2/’  文件名

    USER和UID和GID  sed  ’s/\(^[a-z_-]\+\):x:\([0-9]\+\):\[0-9]\+\):.*$/\1  \2  \3/’  文件名

7   -\(\)替换某种或部分字符串

8   -r复制指定文件插入到匹配行  插入操作   sed  ’匹配行要读的文件要插入的文件   意思是把读取的文件插入到另一个文件,插入时插入匹配行后面,并且不会改原文件

9   -w复制匹配行拷贝到指定文件里  改写操作   sed  ’匹配行写到的文件’  要写入的文件也就是原文件名   只拷贝了匹配行到写到的文件中,而原文件没有改变,如果没有写匹配行,那么就会把整个原文件拷贝到要写到的文件中

10  q退出   sed  nl  文件名 |  sed  ’操作q’  意思是执行到这个操作后就马上退出sed