sed常用命令详解
- sed (Stream EDitor)
shell
a
append,对文本追加,在指定行后面添加一行/多行文本
c
取代,替换
d
Delete,删除匹配行
i
insert,表示插入文本,在指定行前添加一行/多行文本
p
Print ,打印匹配行的内容,通常p与-n一起用
s/正则/替换内容/g
匹配正则内容,然后替换内容(支持正则),结尾g代表全局匹配
- sed操作,源文件内容是不变的,如果想保存修改内容,可以保存成其它文件
创建文件
- 新建文件
test_sed.txt
,并添加内容
命令演示
-
查找指定内容所在行
sed -n '/111/p' test_sed.txt
-
匹配包含两个关键字之间的行
sed -n '/111/,/333/p' test_sed.txt
-
查询到指定字符之后的指定行
sed -n '/111/,2p' test_sed.tx
-
查询指定行到所匹配字符所在行
sed -n '1,/22/p' test_sed.txt
-
不包含字符的行
sed -n '/666/!p' test_sed.txt
-
匹配每一行,并新加一行
sed 'a 行尾追加内容' test_sed.txt
-
可以看到源文件并没有改变
-
保存新文件
sed 'a 添加内容' test_sed.txt > new_file.txt
-
在指定行上面一行追加内容
sed '2i 在第二行上面,新增内容' test_sed.txt
-
在指定行下面,追加一行内容
sed '2a 在第二行下面添加一行数据' test_sed.txt
- 如果要添加多行数据,内容里面添加换行符
\n
就可以sed '2a 在第二行下面添加的内容1\n添加的内容2' test_sed.txt
- 删除指定行数据
sed '3d' test_sed.txt
- 删除最后一行
sed '$d' test_sec.txt
- 删除多行数据
sed '1,3d' test_sed.txt
- 删除第二行到最后一行数据
sed '2,$d' test_sed.txt
- 删除包含指定内容的行
sed '/333/d' test_sed.txt
- 替换指定内容
sed 's/11111/12345/g' test_sed.txt
- s后面的所有字符都被视为分割符号,g标识是全局替换的意思会全部替换,没有g标识只替换匹配到的每一行的第一个字符
- 替换指定内容
sed 's#11111#12345#g' test_sed.txt
- 可以看出s后面跟任何字符都可以
- 打印(输出)指定行内容
sed '2p' -n test_sed.txt
- 数据指定范围行
sed '2,4p' -n test_sed.txt
$
代表最后一行
- 打印指定时间范围内的内容
- 显示开始时间-结束时间范围内的内容
shell
sed '/开始时间日期/,/结束时间日期/p' test_sed.txt