sed行文本处理工具
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行文本处理工具相关推荐
- linux基于文本的配置工具,Linux基本配置和管理 3 ---- Linux命令行文本处理工具
1 文件浏览(简单回顾) 1 cat 查看文件的内容 2 more 以翻页的形式查看,但是只能向下翻页 3 less 以翻页的形式查看,但是能够支持向上和向下翻页 4 head 默认是查看前10行,但 ...
- linux之sed用法 (文本处理工具)
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: ...
- linux sed 倒数,文本处理工具之sed
sed 行编辑器 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的 ...
- Linux命令行文本处理工具
http://itercast.com/lecture/28 grep 关键字 指定文件 -i 搜索时忽略大小写 -n 显示结果所在行 -v 显示不包含关键字的行 基于列的文本处理: cu ...
- go编写命令行工具_编写者的命令行文档转换工具
go编写命令行工具 今天,我们有足够的工具可用于在我们的计算机上编辑备忘录,信件,论文,书籍,演示幻灯片和其他文档. 这既有好处也有缺点:一方面,如果您不喜欢某个软件,则可以随时随地转到另一个软件上: ...
- 常用的Linux命令行文本处理工具总结
关键字搜索: grep 关键字 指定文件 -i 搜索时忽略大小写 -n 显示结果所在行 -v 显示不包含关键字的行 基于列的文本处理: cut -d: -f1 /etc/passwd ...
- sed amp;amp; awk工具 及一些经常使用的shell脚本
(一)sed sed是一个精简的.非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名称.然后在屏幕上查看输出. 逐行读取文件内容存储在暂时缓冲区中,称为"模式空间"(pat ...
- shell编程之进阶篇三常见命令详解
常见命令详解 接下来我们介绍一些shell脚本中经常使用的linux命令:grep.sed.awk.find grep命令详解 grep命令是我们常用的一个强大的文本搜索命令. 命令格式详解 grep ...
- SHELL自动化运维
第1章 shell脚本 1.1 shell 简介 shell 的定义: 1. 在计算机科学中,Shell就是一个命令解释器. 2. shell是位于操作系统和应用程序之间,是他们二者最主要的接口,sh ...
最新文章
- 干货 | 一文搞懂极大似然估计
- 挨踢部落直播课堂第一期:起航2017——拥抱大数据
- chvg改变vg中LV的数量
- 西南交通大学计算机基础实验,西南交通大学实验教学平台-关于
- 2015-8-10工作日志
- CLIP还能做视频字幕任务!腾讯清华提出CLIP4Caption,ACM MM2021挑战赛第二名!
- python做视频特效_python实现超简单的视频对象提取功能
- 如何用计算机制作公式,常用的那些软件能做公式编辑器
- 【3389】俄远程桌面多端口爆破
- 世界三大粮食·水稻稻米十大生产国 国稻种芯百团计划行动
- Java图片上传Base64 类型上传 后台转换工具类
- Autel Maxisys Elite Common FAQs
- 解决图片旋转之后的位置问题
- 二位、三位国家码附SQL语句
- kotlin Anko的实际用法
- android相册制作,如何用手机制作音乐相册 安卓手机能不能制作音乐相册,手机制作音乐相册的方法...
- linux系统 如何选择题,Linux认证考试练习题
- GROMACS知识问答
- 鼠标滑轮,滑动加载效果
- 【基于NSR3588开发板Android12三屏拼接显示实例】
热门文章
- H5页面在 ios 端滑动不流畅的问题
- echarts 地图实现轮播(一)
- ProE常用曲线方程:Python Matplotlib 版本代码(蝴蝶曲线)
- linux 跨物理 集群,linux学习之使用keepalived结合lvs搭建高可用负载均衡集群
- ucore-lab1-练习5report
- 在android studio中创建Hello-JNI工程
- 各个平台看 docset 的工具
- Android判断当前线程是否是主线程的方法
- 20佳精美404错误页面设计欣赏
- 解决升级 Office 2010 之后 Outlook 提示“无法打开 Microsoft Outlook”