001 删除1-10行

1
sed '1,10d' file                   

002 删除换行

1
2
3
sed ':label;N;s/\n//;b label' 

sed ':a;N;$!ba;s/\n//g' /root/.ssh/authorized_keys

003 分组并格式化

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
sed 's/\(.\{5\}\)\(.*\)/\1|\2/g' abcd20190513001.txt | awk -F"|" '{printf("%5s,%8s,%5d,%2s,%8.2f,%6s\n",$1,$2,$3,$4,$5,$6)}'| sed 's/\,/|/g'


echo 'tags: [ "2018" ]' | sed -r 's/([0-9]+\")/\1,\"ALL\"/g'

##############
cat test1
first:second
one:two

sed 's/\(.*\):\(.*\)/\2:\1/' test   

second:first
two:one
##############

004 将前两行搬到文件末尾

sed -e '1,2{H;D};$G' hehe.sh  
1
2
3
4
5
6
sed -n '1,4p' file
sed -n '1~2p' file
sed -n '2~2p' file
sed '/pipei/s/zaipipei/tihuan/' file
sed '2 a newline' file  # 第二行后插入新行
sed '/image: docker/a\    restart: always' docker-compose.yml  |grep image  # image: docker 后新增一行

命令n: 打印模式空间

命令x: 保持空间替换模式空间

命令h: 将模式空间的内容复制到保持空间

命令H: 将模式空间的内容追加到保持空间

命令g: 将保持空间的内容复制到模式空间

命令G: 将保持空间的内容追加到模式空间

命令N: 读取下一行数据并追加到模式空间

命令P: 打印多行模式中的第一行

命令D: 删除多行模式中的第一行

:label: 定义一个标签

命令b label: 执行该标签后面的命令。sed会跳转到该标签,然后执行后面的命令

命令t: 进入循环