sed替换 stream editor 根据定位到到数据行修改数据,用于数据修改
sed[addr]X[options]
-e 表达式
sed -n '2p' 打印第二行
sed -n '/00:00:01/,/00:00:04/' /tmp/nginx.log 打印1-4之间的数据
sed 's#hello#world#' 修改
-i 直接修改源文件
-E 扩展表达式
--debug
d 删除
p 打印,通常结合 -n 参数
s/正则/匹配的内容/[FLAGS]
seq 11 21 | sed -n '/14/,/19/p'
14
15
16
17
18
19
seq 11 21 | sed -n '2, 4p'
12
13
14
12 匹配的字段
seq 100 110 | sed 's/..//'
0
1
2
3
4
5
6
7
8
9
0
seq 126 134 | sed -E 's/..(.)/1/g'
6
7
8
9
0
1
2
3
4
seq 126 134 | sed -E 's/(.)(.)./12/g'
12
12
12
12
13
13
13
13
13
seq 126 134 | sed -E 's/(.)(.)./1+2/g'
1+2
1+2
1+2
1+2
1+3
1+3
1+3
1+3
1+3
sed 's/hello/A/' test.txt 将文本文件中的hello替换为A,但是改的是模式空间的内容,原文件没有被修改
sed -i 's/hello/A/' test.txt 添加了-i修改了原文件
sed -i.bak 's/A/hello/' test.txt 防止替换错误,加上.bak可以多生成bak文件
echo 123abc456 | sed 's#[2-9]#x#g' g全部替换 s#正则#结果#
1xxabcxxx
awk '{print $7}' /tmp/nginx.log | sed 's#[0-9]{1,}#*#g' 将IP地址后的0-9大于等于1及多个数字都替换为*
/topics/*/replies/*/edit
/topics/*?locale=zh-TW
awk '{print $7}' /tmp/nginx.log | sed -e 's#[0-9]{1,}#*#g' -e 's#?.*##' -e可以加上多个正则
echo "cat dog cat dog" |sed 's/cat/wulala/' 替换的结果为:wulala dog cat dog
echo "cat dog cat dog" |sed 's/cat/wulala/g' 替换的结果为:wulala dog wulala dog (符合条件的全部都替换)