Sed是一种流编辑器,过滤和替换文本

工作原理:

简单的来说,Sed一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称之为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行。直到文件末尾。

语法:

sed [option] [script'(sed自带语法脚本)] [input-file处理的文件]

sed [选项] + "地址+命令 " file

常用option参数(+描述):

--help: 获取帮助信息;
-n: 不输出模式空间内容到屏幕,即不自动打印,配合编辑命令只打印符合条件字符串;
-e: 多点编辑,可添加多个脚本;
-f: /PATH/SCRIPT_FILE,从指定文件中读取编辑脚本;
-i: 原文件编辑(直接修改原处理文件),不添加-i参数,不会对原文件进行修改;
-r : 支持使用扩展的正则表达式;

Script:

地址+命令

地址:

1.不给地址:对全文进行处理;

2.单地址:

#:指定的行(1p,2p...)

/pattern/:被模式匹配匹配到的字串行

3.范围地址:

#,#:第几行只第几行(1,2p)

#,+#:从第#行起始向后+#行

/pat1/,/pat2/:模式1匹配 所在行至模式2匹配所在行

#,/pat/:第几行只模式匹配行

4.~:步进

1~2:奇数行

2~2:偶数行

编辑命令:

d: 删除模式空间匹配的行;
p: 显示模式空间中的内容;
a \text: 在指定行后追加文本,支持使用\n多行追加文本;
i \test: 在行前面插入文本,支持使用\n实现多行插入;
c \test: 替换行为单行或多行文本;
w /PATH/Somefile: 保存模式匹配的行至指定文件;
r /PATH/Somefile: 读取指定文件的文本至模式空间中匹配到的行后;
=: 为模式空间中的行打印行号;
!: 模式空间中匹配行取反操作;

sed查找替换:

s///:查找替换,只是吃用其他分隔符:

s@@@

s###

替换标记:

g:行内全局替换

p:显示替换成功的行

w /PATH/TO/Somefile:将替换成功的行报错至文件中

操作原文件:

[root@GaoServer ~]# cat -n Test.txt 1 root:x:0:0:root:/root:/bin/bash2    bin:x:1:1:bin:/bin:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin4    adm:x:3:4:adm:/var/adm:/sbin/nologin5   lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6   sync:x:5:0:sync:/sbin:/bin/sync7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown8   halt:x:7:0:halt:/sbin:/sbin/halt9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin10    operator:x:11:0:operator:/root:/sbin/nologin

匹配打印(p):

#打印匹配root开头的行:
#每一行都读到模式空间,不加-n参数默认进行输出,这里看到root:x:0:0:root:/root:/bin/bash输出两行
[root@GaoServer ~]# cat Test.txt | sed '/^root/p'
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin[root@GaoServer ~]# tail Test.txt | sed -n '/^root/p'
root:x:0:0:root:/root:/bin/bash#打印包含root的行:
[root@GaoServer ~]# cat -n Test.txt | sed -n '/root/p'1  root:x:0:0:root:/root:/bin/bash10   operator:x:11:0:operator:/root:/sbin/nologin#打印第二行:
[root@GaoServer ~]# cat -n Test.txt | sed -n '2p'2   bin:x:1:1:bin:/bin:/sbin/nologin
[root@GaoServer ~]##打印第一行到,第三行:
[root@GaoServer ~]# cat -n Test.txt | sed -n '1,3p'1 root:x:0:0:root:/root:/bin/bash2    bin:x:1:1:bin:/bin:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin#打印第三行起始后三行:
[root@GaoServer ~]# cat -n Test.txt | sed -n '3,+3p'3   daemon:x:2:2:daemon:/sbin:/sbin/nologin4    adm:x:3:4:adm:/var/adm:/sbin/nologin5   lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6   sync:x:5:0:sync:/sbin:/bin/sync#打印以nologin结尾的行:(匹配)
[root@GaoServer ~]# cat -n Test.txt | sed -n '/nologin$/p'2  bin:x:1:1:bin:/bin:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin4    adm:x:3:4:adm:/var/adm:/sbin/nologin5   lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin10    operator:x:11:0:operator:/root:/sbin/nologin#打印root开头行至daemon开头行
[root@GaoServer ~]# sed -n '/^root/,/^daemon/p' Test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin#打印最后一行
[root@GaoServer ~]# cat -n Test.txt | sed -n '$p'10  operator:x:11:0:operator:/root:/sbin/nologin#不打印最后一行:(“!”表示取反)
[root@GaoServer ~]# cat -n Test.txt | sed -n '$!p'1  root:x:0:0:root:/root:/bin/bash2    bin:x:1:1:bin:/bin:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin4    adm:x:3:4:adm:/var/adm:/sbin/nologin5   lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6   sync:x:5:0:sync:/sbin:/bin/sync7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown8   halt:x:7:0:halt:/sbin:/sbin/halt9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin#打印奇数行
[root@GaoServer ~]# cat -n Test.txt |sed -n '1~2p'1  root:x:0:0:root:/root:/bin/bash3    daemon:x:2:2:daemon:/sbin:/sbin/nologin5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin7   shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin#打印偶数行
[root@GaoServer ~]# cat -n Test.txt |sed -n '2~2p'2  bin:x:1:1:bin:/bin:/sbin/nologin4   adm:x:3:4:adm:/var/adm:/sbin/nologin6   sync:x:5:0:sync:/sbin:/bin/sync8    halt:x:7:0:halt:/sbin:/sbin/halt10  operator:x:11:0:operator:/root:/sbin/nologin#引用变量:sed命令使用单引号:变量用单引号引起来,sed命令使用双引号,解释特殊符号原有意义
[root@GaoServer ~]# a=1
[root@GaoServer ~]# b=2
[root@GaoServer ~]# cat -n Test.txt | sed -n ''$a','$b'p'1   root:x:0:0:root:/root:/bin/bash2    bin:x:1:1:bin:/bin:/sbin/nologin
[root@GaoServer ~]# cat -n Test.txt | sed -n "$a,"$b"p"1   root:x:0:0:root:/root:/bin/bash2    bin:x:1:1:bin:/bin:/sbin/nologin

匹配删除(d):

#删除匹配root行
[root@GaoServer ~]# cat -n Test.txt | sed '/root/d'2 bin:x:1:1:bin:/bin:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin4    adm:x:3:4:adm:/var/adm:/sbin/nologin5   lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6   sync:x:5:0:sync:/sbin:/bin/sync7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown8   halt:x:7:0:halt:/sbin:/sbin/halt9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin#删除第二行
[root@GaoServer ~]# cat -n Test.txt | sed '2d'1  root:x:0:0:root:/root:/bin/bash3    daemon:x:2:2:daemon:/sbin:/sbin/nologin4    adm:x:3:4:adm:/var/adm:/sbin/nologin5   lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6   sync:x:5:0:sync:/sbin:/bin/sync7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown8   halt:x:7:0:halt:/sbin:/sbin/halt9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin10    operator:x:11:0:operator:/root:/sbin/nologin#删除1至9行
[root@GaoServer ~]# cat -n Test.txt | sed '1,9d'10   operator:x:11:0:operator:/root:/sbin/nologin#删除偶数行
[root@GaoServer ~]# cat -n Test.txt | sed '2~2d'1    root:x:0:0:root:/root:/bin/bash3    daemon:x:2:2:daemon:/sbin:/sbin/nologin5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin7   shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
#删除配置文件中以(#开头的行和空行)
[root@GaoServer ~]# sed '/^#/d;/^$/d' /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

替换(s///):

#替换root字符串为ROOT,s///:只是替换每行中第一个匹配到的字符串
[root@GaoServer ~]# cat -n Test.txt | sed 's/root/ROOT/'1    ROOT:x:0:0:root:/root:/bin/bash                #第一行中只有第一个root替换成ROOT2   bin:x:1:1:bin:/bin:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin4    adm:x:3:4:adm:/var/adm:/sbin/nologin5   lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6   sync:x:5:0:sync:/sbin:/bin/sync7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown8   halt:x:7:0:halt:/sbin:/sbin/halt9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin10    operator:x:11:0:operator:/ROOT:/sbin/nologin    #唯一一个root#全局替换root字符串为ROOT,s///g
[root@GaoServer ~]# cat -n Test.txt | sed 's/root/ROOT/g'1   ROOT:x:0:0:ROOT:/ROOT:/bin/bash2    bin:x:1:1:bin:/bin:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin4    adm:x:3:4:adm:/var/adm:/sbin/nologin5   lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6   sync:x:5:0:sync:/sbin:/bin/sync7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown8   halt:x:7:0:halt:/sbin:/sbin/halt9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin10    operator:x:11:0:operator:/ROOT:/sbin/nologin#正则匹配
[root@GaoServer ~]# sed -n 's/^root/ROOT/p' Test.txt
ROOT:x:0:0:root:/root:/bin/bash#分组使用:取出基本名,目录名
[root@GaoServer ~]# dirname /etc/sysconfig/sshd
/etc/sysconfig
[root@GaoServer ~]# basename /etc/sysconfig/sshd
sshd
[root@GaoServer ~]# echo "/etc/sysconfig/sshd" | sed -r 's#(/.*/)([^/]+/?)#\1#'
/etc/sysconfig/
[root@GaoServer ~]# echo "/etc/sysconfig/sshd" | sed -r 's#(/.*/)([^/]+/?)#\2#'
sshd#使用&命令引用匹配内容并且替换,
#注:&代表root,&.1:把root替换成root.1
[root@GaoServer ~]# cat -n Test.txt |sed 's/root/&.1/g'1 root.1:x:0:0:root.1:/root.1:/bin/bash
......#为1,2行添加注释
[root@GaoServer ~]# cat -n Test.txt |sed '1,2s/^/#/'
#     1 root:x:0:0:root:/root:/bin/bash
#     2 bin:x:1:1:bin:/bin:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin4    ADM:x:3:4:ADM:/var/ADM:/sbin/nologin5   lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

多点编辑(-e):

[root@GaoServer ~]# cat -n Test.txt |sed -e '4,5d' -e 's/root/ROOT/g'1    ROOT:x:0:0:ROOT:/ROOT:/bin/bash2    bin:x:1:1:bin:/bin:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin6    sync:x:5:0:sync:/sbin:/bin/sync7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown8   halt:x:7:0:halt:/sbin:/sbin/halt9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin10    operator:x:11:0:operator:/ROOT:/sbin/nologin

添加/追加内容(a,i,c):

#i:在搜索匹配到的上一行添加
[root@GaoServer ~]# cat -n Test.txt | sed '/root/i \Root'
Root1   root:x:0:0:root:/root:/bin/bash2    bin:x:1:1:bin:/bin:/sbin/nologin
......#a:在搜索匹配的下一行添加
[root@GaoServer ~]# cat -n Test.txt | sed '/root/a \Root'1   root:x:0:0:root:/root:/bin/bash
Root2   bin:x:1:1:bin:/bin:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin
......#c:替换搜索匹配的行
[root@GaoServer ~]# cat -n Test.txt | sed '/root/c \Root'
Root2   bin:x:1:1:bin:/bin:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin
......

注:同样可以指定地址单行添加,指定地址范围添加......

保存模式匹配的行至指定文件(w):

#匹配1,2行追加Test1
[root@GaoServer ~]# cat -n Test.txt | sed '1,2w Test1'1  root:x:0:0:root:/root:/bin/bash2    bin:x:1:1:bin:/bin:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin4    adm:x:3:4:adm:/var/adm:/sbin/nologin5   lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6   sync:x:5:0:sync:/sbin:/bin/sync7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown8   halt:x:7:0:halt:/sbin:/sbin/halt9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin10    operator:x:11:0:operator:/root:/sbin/nologin
[root@GaoServer ~]# cat Test11 root:x:0:0:root:/root:/bin/bash2    bin:x:1:1:bin:/bin:/sbin/nologin

读取指定文件的文本追加至模式空间(r):

#读取/etc/redhat-release,追加至1,2行
[root@GaoServer ~]# cat -n Test.txt | sed '1,2r /etc/redhat-release'1    root:x:0:0:root:/root:/bin/bash
CentOS Linux release 7.2.1511 (Core) 2  bin:x:1:1:bin:/bin:/sbin/nologin
CentOS Linux release 7.2.1511 (Core) 3  daemon:x:2:2:daemon:/sbin:/sbin/nologin4    adm:x:3:4:adm:/var/adm:/sbin/nologin5   lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

匹配到的行号:

#=:
[root@GaoServer ~]# cat -n Test.txt | sed -n '/root/='
1
10

原文件编辑(i):

[root@GaoServer ~]#  sed -i 's/adm/ADM/g' Test.txt
[root@GaoServer ~]# cat Test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ADM:x:3:4:ADM:/var/ADM:/sbin/nologin
......

注意:由于-i参数修改原配置文件,操作比较危险,可以使用-i.bak执行,生成源文件.bak就是之前没有改动的文件(bak是自己制定,随意指定)。

[root@GaoServer ~]# sed -i.bak '1,7d' Test.txt
[root@GaoServer ~]# cat Test.txt
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@GaoServer ~]# cat Test.txt.bak        #原文件备份
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ADM:x:3:4:ADM:/var/ADM:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin


空间操作:

n: 读取匹配到的行的下一行覆盖至模式空间;
N: 读取匹配到的行的下一行追加至模式空间;
h: 模式空间中内容覆盖至保持空间中;
H: 模式空间中的内容追加至保持空间中;
g: 从保持空间取出数据覆盖至模式空间;
G: 从保持空间取出内容追加至模式空间;
d: 删除模式空间中的行;
D: 删除当前模式空间开端至\n的内容(不在传至标准输出),放弃之后的命令,对剩余模式空间重新执行sed;
x: 模式空间中内容与保持空间内容进行互换;
#取出偶数行:
[root@GaoServer ~]# cat -n Test.txt | sed -n 'n;p'2  bin:x:1:1:bin:/bin:/sbin/nologin4   ADM:x:3:4:ADM:/var/ADM:/sbin/nologin6   sync:x:5:0:sync:/sbin:/bin/sync8    halt:x:7:0:halt:/sbin:/sbin/halt10  operator:x:11:0:operator:/root:/sbin/nologin
#取出奇数行:
[root@GaoServer ~]# cat -n Test.txt | sed 'n;d'1 root:x:0:0:root:/root:/bin/bash3    daemon:x:2:2:daemon:/sbin:/sbin/nologin5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin7   shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
#倒叙显示:
[root@GaoServer ~]# cat -n Test.txt |sed -n '1!G;h;$p'10 operator:x:11:0:operator:/root:/sbin/nologin9   mail:x:8:12:mail:/var/spool/mail:/sbin/nologin8 halt:x:7:0:halt:/sbin:/sbin/halt7   shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown6   sync:x:5:0:sync:/sbin:/bin/sync5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin4   adm:x:3:4:adm:/var/adm:/sbin/nologin3   daemon:x:2:2:daemon:/sbin:/sbin/nologin2    bin:x:1:1:bin:/bin:/sbin/nologin1   root:x:0:0:root:/root:/bin/bash
#打印文件最后一行:
[root@GaoServer ~]# sed 'N;D' Test.txt
operator:x:11:0:operator:/root:/sbin/nologin
#在每行后增加空行:
[root@GaoServer ~]# sed 'G' Test.txt
root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin......

转载于:https://blog.51cto.com/gning/1962336

sed行文本处理工具相关推荐

  1. linux基于文本的配置工具,Linux基本配置和管理 3 ---- Linux命令行文本处理工具

    1 文件浏览(简单回顾) 1 cat 查看文件的内容 2 more 以翻页的形式查看,但是只能向下翻页 3 less 以翻页的形式查看,但是能够支持向上和向下翻页 4 head 默认是查看前10行,但 ...

  2. linux之sed用法 (文本处理工具)

     sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法 sed命令行格式为:          ...

  3. linux sed 倒数,文本处理工具之sed

    sed 行编辑器 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的 ...

  4. Linux命令行文本处理工具

    http://itercast.com/lecture/28 grep  关键字  指定文件 -i   搜索时忽略大小写 -n  显示结果所在行 -v  显示不包含关键字的行 基于列的文本处理: cu ...

  5. go编写命令行工具_编写者的命令行文档转换工具

    go编写命令行工具 今天,我们有足够的工具可用于在我们的计算机上编辑备忘录,信件,论文,书籍,演示幻灯片和其他文档. 这既有好处也有缺点:一方面,如果您不喜欢某个软件,则可以随时随地转到另一个软件上: ...

  6. 常用的Linux命令行文本处理工具总结

    关键字搜索: grep  关键字  指定文件 -i   搜索时忽略大小写 -n  显示结果所在行 -v  显示不包含关键字的行 基于列的文本处理: cut -d: -f1 /etc/passwd   ...

  7. sed amp;amp; awk工具 及一些经常使用的shell脚本

    (一)sed sed是一个精简的.非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名称.然后在屏幕上查看输出. 逐行读取文件内容存储在暂时缓冲区中,称为"模式空间"(pat ...

  8. shell编程之进阶篇三常见命令详解

    常见命令详解 接下来我们介绍一些shell脚本中经常使用的linux命令:grep.sed.awk.find grep命令详解 grep命令是我们常用的一个强大的文本搜索命令. 命令格式详解 grep ...

  9. SHELL自动化运维

    第1章 shell脚本 1.1 shell 简介 shell 的定义: 1. 在计算机科学中,Shell就是一个命令解释器. 2. shell是位于操作系统和应用程序之间,是他们二者最主要的接口,sh ...

最新文章

  1. 干货 | 一文搞懂极大似然估计
  2. 挨踢部落直播课堂第一期:起航2017——拥抱大数据
  3. chvg改变vg中LV的数量
  4. 西南交通大学计算机基础实验,西南交通大学实验教学平台-关于
  5. 2015-8-10工作日志
  6. CLIP还能做视频字幕任务!腾讯清华提出CLIP4Caption,ACM MM2021挑战赛第二名!
  7. python做视频特效_python实现超简单的视频对象提取功能
  8. 如何用计算机制作公式,常用的那些软件能做公式编辑器
  9. 【3389】俄远程桌面多端口爆破
  10. 世界三大粮食·水稻稻米十大生产国 国稻种芯百团计划行动
  11. Java图片上传Base64 类型上传 后台转换工具类
  12. Autel Maxisys Elite Common FAQs
  13. 解决图片旋转之后的位置问题
  14. 二位、三位国家码附SQL语句
  15. kotlin Anko的实际用法
  16. android相册制作,如何用手机制作音乐相册 安卓手机能不能制作音乐相册,手机制作音乐相册的方法...
  17. linux系统 如何选择题,Linux认证考试练习题
  18. GROMACS知识问答
  19. 鼠标滑轮,滑动加载效果
  20. 【基于NSR3588开发板Android12三屏拼接显示实例】

热门文章

  1. H5页面在 ios 端滑动不流畅的问题
  2. echarts 地图实现轮播(一)
  3. ProE常用曲线方程:Python Matplotlib 版本代码(蝴蝶曲线)
  4. linux 跨物理 集群,linux学习之使用keepalived结合lvs搭建高可用负载均衡集群
  5. ucore-lab1-练习5report
  6. 在android studio中创建Hello-JNI工程
  7. 各个平台看 docset 的工具
  8. Android判断当前线程是否是主线程的方法
  9. 20佳精美404错误页面设计欣赏
  10. 解决升级 Office 2010 之后 Outlook 提示“无法打开 Microsoft Outlook”