实例妙解Sed和Awk的秘密——Sed高级操作命令

高级操作命令(1)

 -{ } : 多个sed命令,用;分开

实例妙解Sed和Awk的秘密——Sed高级操作命令_第1张图片

高级操作命令(2)

-n : 读取下一个输入行(用下一个命令处理)

实现跳行输出有两种方法:
  1. sed -n '起始行~行距(每次跳几行)' 文件名 
  2. sed 中的n命令表示调到下一行, 
         sed -n '{n;p}' 就可以表示先跳到下一行,然后再开始打印,结果就是输出所有的偶数行

实例妙解Sed和Awk的秘密——Sed高级操作命令_第2张图片

实例妙解Sed和Awk的秘密——Sed高级操作命令_第3张图片

实例妙解Sed和Awk的秘密——Sed高级操作命令_第4张图片

实例妙解Sed和Awk的秘密——Sed高级操作命令_第5张图片

高级操作命令(3)

-& : 替换固定字符串

实例妙解Sed和Awk的秘密——Sed高级操作命令_第6张图片

案例一:大小写转换

将用户名的首字母转换为大写/小写

(元字符 \u \| \U \L;转换为大写/小写字符)

分析:
1. & 代替固定字符串
   sed 's/^[a-z_-]\+/& /' /etc/passwd  将用户名后面添加空格
2. \u \l \U \L转换大小写,前边小写u和l仅变更开头字符,大写U和L变更全部
   sed 's/^[a-z-_]\+/\u&/' /etc/passwd 将用户名第一个字母转大写

实例妙解Sed和Awk的秘密——Sed高级操作命令_第7张图片

案例二:

将文件夹下的.txt文件名转换为大写

实例妙解Sed和Awk的秘密——Sed高级操作命令_第8张图片

案例三:数据筛选("获取passwd中USER、UID和GID")

sed 's/\(^[a-z0-9_-]\+\):x:\([0-9]\+\):\([0-9]\+\):.*$/\1 \2 \3/' passwd
实例妙解Sed和Awk的秘密——Sed高级操作命令_第9张图片

高级操作命令(4)

-\(  \) : 替换某种(部分)字符串( \1,\2 )

案例二:数据筛选("获取eth0的ip")

实例妙解Sed和Awk的秘密——Sed高级操作命令_第10张图片

高级操作命令(5)

-r  : 复制指定文件插入到匹配行

-w : 复制匹配行拷贝指定文件里 


实例妙解Sed和Awk的秘密——Sed高级操作命令_第11张图片

1. sed '1r 123.txt' abc.txt : 代表把123.txt整个文件的内容附加在abc.txt的第一行内容之后
2. sed '1w 123.txt' abc.txt : 代表把abc.txt的第一行拷贝到123.txt文件
  注意此时会覆盖文件123.txt原本的内容
实例妙解Sed和Awk的秘密——Sed高级操作命令_第12张图片

实例妙解Sed和Awk的秘密——Sed高级操作命令_第13张图片

高级操作命令(6)

q : 退出sed

实例妙解Sed和Awk的秘密——Sed高级操作命令_第14张图片

sed学习总结:

sed的行处理方式是读入一行,然后处理一行。
  读入的行想存在patten中,但不是所有读入的行都会被处理
  通过正则行定位的行会被处理

实例妙解Sed和Awk的秘密——Sed高级操作命令_第15张图片


至此,sed命令就学习完了....

你可能感兴趣的:(Linux学习,Linux学习杂技)