sed命令

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

\1\2 匹配的字段

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/(.)(.)./\1\2/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 (符合条件的全部都替换)

posted @ 2019-09-07 11:58  yile  阅读(138)  评论(0编辑  收藏  举报