sed 用法
sed 是个流编辑器,用来对文本逐行处理,主要用来 搜索 、替换、插入、删除操作
基本语法结构
sed [option] 'command' file
选项:
常用参数
-n
: 取消自动输出,只有指定的行才会显示。常和 p 配合使用;
-i
: 在文件直接操作,慎重使用;
-e
: 执行多条 sed 命令;
-r
: 支持扩展正则表达式(ERE);
-f
: 从脚本文件读取 sed 命令;
用途:
- 替换
常规用法:sed 's/查找内容/替换内容/标志' file
标志:
g: 全局替换,默认只对行的第一个查找内容替换,g 定义全局替换;
i: 忽略大小写;
n: 只替换的第 n 个匹配;
指定单行 : sed 'ns/查找内容/替换内容/标志' file
例: 修改第 3 行的所有 ax 为 tf sed '3s/ax/tf/g' sed.txt
指定多行: sed 'n,ms/查找内容/替换内容/标志' file
例: 修改第 3-10 行的所有 ax 为 tf
1.sed '3,10s/ax/tf/g' sed.txt
2.sed '3,10{s/ax/tf/g}' sed.txt
符合条件的行: sed '/指定条件/s/查找内容/替换内容/标志'file
例: 修改所有包含有name
行内的 ax 为 tfsed '/name/s/ax/tf/g' sed.txt
例: 修改第三个及以后包含有name
的行内的ax为tfsed '/name/{3,$s/sx/tf/g}' sed.txt
替换整行: sed '行号c/替换内容' file
例:将第三行替换为 # replaced line
sed '3c/# replaced line' sed.txt
- 插入、追加
某行前插入:sed '行号i\插入内容' sed.txt 例: 在sed.txt第三行前插入
# new line
末行后追加: sed '行号a\追加内容' sed.txt
例: 在sed.txt第三行后插入 # new line
sed '3a\# new line' sed.txt
打印
打印指定行:sed -n '2p' file
例: 打印首行sed -n '1p' sed.txt
例: 打印第15-17行sed '15,17p' sed.txt
打印匹配行:sed -n '/匹配内容/p' file
例: 打印含有#
的行sed '/#/p' sed.txt
多条命令
sed -e '命令1' -e '命令2' file
例:删除第2行并将ax
替换为tf
sed -e '2d' -e 's/ax/tf/g' sed.txt
正则匹配
sed有限支持正则表达,sed只能单行处理,对断言不支持,需要注意转义字符
例:删除所有以#
开头的行sed '/^#/d' sed.txt
awk 用法
awk 使用按列分析处理文本。
基本语法结构
awk '条件 { 动作}' file
打印
打印行
例:打印所有行 :awk '{print $0}' file
awk '{print $0}' sed.txt
打印列
例: 打印第1列:awk '{print $1}' file
条件过滤
基于值过滤:指定分隔符
默认的awk以空格或者制表符为分隔符,也可通过-F
来指定分隔符。