sed的工作模式
sed是一个流编辑器,比如修改删除等都是编辑。
sed流编辑器
sed的语法格式,pattern是对符合pattern的行过滤,然后将这些行交给comman进行处理。假如没有pattern就是对每一行会进行command处理
sed选项
sed命令选项sed打印
sed -n
pattern
-e
假如这个/pattern/command非常的复杂,可以将其写在一个*.sed文件中,然后用-f指定该文件
-r扩展正则表达式
‘/s//g’逐行替换
替换
sed中的pattern
pattern用发表sed打印
sed pattern2
sed中的编辑命令详解
编辑命令对照1编辑命令2
- sed -i '1d' passwd
- sed -i '1,3d' passwd #删除第一行-第三行
- sed -i '/root/,/adm/d' passwd #删除root开头,到adm开头的所有行
- sed -i '//bin/bash/a HELLO WORLD' passwd #行后追加,a然后空格加要加的句子
-
sed -i '/like/r passwd' py.txt #将passwd的内容追加到符合pattern的行后
修改文件
=号及i
反向引用
反向引用有一个文件,需要把符合Pattern:had..p的字符串其后都加一个s
实例
-
sed -i 's/had..p/&s/ig' str.txt # 忽略大小写
\1正则匹配
使用注意点
变量替换sed中使用变量
利用sed查询指定内容
sed配合grep#!/bin/bash
#
FILE_NAME=/root/lesson/5.6/my.cnf
function get_all_segments
{
echo "`sed -n '/\[.*\]/p' $FILE_NAME | sed -e 's/\[//g' -e 's/\]//g'`"
}
function count_items_in_segment
{
items=`sed -n '/\['$1'\]/,/\[.*\]/p' $FILE_NAME | grep -v "^#" | grep -v "^$" | grep -v "\[.*\]"`
index=0
for item in $items
do
index=`expr $index + 1`
done
echo $index
}
number=0
for segment in `get_all_segments`
do
number=`expr $number + 1`
items_count=`count_items_in_segment $segment`
echo "$number: $segment $items_count"
done
利用sed删除特定内容
删除删除
删除3
删除空行
非#开头的加*
利用sed修改文件内容
修改文件内容修改文件内容
利用sed追加文件内容
追加内容实例1
网友评论