sed可以按照指令或脚本编辑文本的linux工具,文本处理功能非常强大,本文总结一些工作中常用的sed模板,方便大家使用
替换
1. 替换文件中所有的 aaa 到 bbb
sed -i 's/aaa/bbb/g' /path/to/file
2. 找到文件的修改日期
stat deploy | sed -n '/^Modify.*/p' # 找到
stat deploy | sed -n '/^Modify.*/p' | grep -Eo "....-..-.. ..:..:.." # 提取出修改起义
2. 找到 aaa 参数,并设置为off
sed -i '/^aaa/s/on/off/' /path/to/file
可以配合grep使用,完成自动设置参数
have_aaa=$(grep aaa /path/to/file | sed '/^#.*/d') # 寻找是否以存在aaa参数
if [ ! -z $have_aaa ];then # 如果存在
sed -i '/^aaa/s/on/off/' /path/to/file # 则修改为off
else # 如果不存在
sed -i '/ccc/a aaa off' /path/to/file # 则在ccc参数下新增 aaa off
# sed -i '$a/aaa off' /path/to/file # 则在最后新增 aaa off
fi
滤掉所有注释行
cat /etc/my.cnf | sed '/^#.*/d'
找到并删除
找到包含aaa的行并删除
sed -i '/aaa/d' /path/to/file
插入追加
- a/ 在当前行下面插入;
- i/ 在当前行上面插入;
- c/ 把当前行改为新的;
在ccc开头的行下面插入 something
sed -i '/^ccc/a something' /path/to/file
在ccc开头的行后追加 something
sed -i '/^ccc/s/$/something/' /path/to/file
在ccc后紧接着追加something
sed -i 's/ccc/&something/' /path/to/file