sed - 文本分析与转换工具 (3) 实战
Synopsis: 日常工作中会用到sed的地方,经常与管道配合使用。如果是操作字符串,先考虑bash的字符串变量转换,如果达不到目的才考虑使用sed或awk工具。一般用的比较多的是,用sed查找替换一段文本,效率非常的高。对文本内容进行增删改查完全不在话下,同时也可以模拟实现Linux中一些常用的命令功能
sed系列:
- sed - 文本分析与转换工具 (1) 入门
- sed - 文本分析与转换工具 (2) 进阶
- sed - 文本分析与转换工具 (3) 实战 [current]
1. 常见用法
同一操作指令
instruction
中包含多个地址addresses
或命令command
时:
1. 一个操作指令中有多个命令时,多个命令按顺序用;隔开。先输出行号再打印行内容 # sed -n '/nologin/ { = ; p }' /etc/passwd 6. 一个操作指令中有多个地址(即有多个匹配条件)时,多个地址用{}嵌套。第1至10行中,包含nologin字串的行,先输出行号再打印行内容 # sed -n '1,10 { /nologin/ { = ; p } }' /etc/passwd
1.1 查找
使用p
命令
1. 打印最后一行 # sed -n '$ p' books.txt 6) A Game of Thrones, George R. R. Martin, 864 2. 打印包含字串Tolkien的行 # sed -n '/Tolkien/ p' books.txt 2) The Two Towers, J. R. R. Tolkien, 352 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 3. 打印第1到3行 # sed -n '1,3 p' books.txt 1) A Storm of Swords, George R. R. Martin, 1216 2) The Two Towers, J. R. R. Tolkien, 352 3) The Alchemist, Paulo Coelho, 197 4. 打印奇数行 # sed -n '1~2 p' books.txt 或者: # sed 'n ; d' books.txt 5. 打印偶数行 # sed -n '2~2 p' books.txt 或者: # sed '1d ; n ; d' books.txt
1.2 新增
使用a
和i
命令
1. 在末尾追加一行 # sed '$ a hello world' books.txt 2. 在倒数第二行新增字串 # sed '$ i hello world' books.txt 3. 在包含字串Tolkien的行后面新增字串(字串的开头有两个空白字符,以\ 转义) # sed '/Tolkien/ a \ \ hello world' books.txt 4. 增加两行,字串中间添加\n换行符即可 # sed '/Tolkien/ a hello\nworld' books.txt
1.3 修改
使用s
或c
命令
1. 在1至3行的行头部都添加# # sed '1,3 s/^/# /' books.txt 2. 在字串Tolkien的前后添加尖括号,修改为<Tolkien> # sed -n 's/Tolkien/<&>/ p' books.txt 特殊字符&用于存储匹配模式的内容 2) The Two Towers, J. R. R. <Tolkien>, 352 4) The Fellowship of the Ring, J. R. R. <Tolkien>, 432 或者: # sed -r -n 's/(Tolkien)/<\1>/ p' books.txt 扩展正则表达式\1代表第一个匹配组 2) The Two Towers, J. R. R. <Tolkien>, 352
未经允许不得转载: LIFE & SHARE - 王颜公子 » sed - 文本分析与转换工具 (3) 实战
0 条评论
评论者的用户名
评论时间暂时还没有评论.