vim命令格式:
vim [option]… FILE…
说明:
如果该文件存在,文件被打开并显示内容
如果该文件不存在,当编辑后第一次存盘时创建它

三种常见模式:
命令模式:默认模式,可以实现移动光标,剪切/粘贴文本
插入模式:用于修改文本
扩展命令模式或末行模式:保存,退出等

模式转换:
命令模式 --> 插入模式:
i:在光标所在处输入
I:在光标所在行的行首输入
a:在光标所在处后面输入
A:在光标所在行的行尾输入
o:在当前光标所在行的下方打开一个新行
O:在当前光标所在行的上方打开一个新行

插入模式 —ESC—>命令模式
命令模式 —:--->末行模式
末行模式 —ESC,enter—>命令模式

范例:插入颜色字符
1.切换至插入模式
2.按ctrl+v,显示^[
3.后续输入颜色信息,如:[[1;31mRed[[0m
4.切换至末行模式,保存退出
5.查看文件即可显示颜色字符

末行模式基本命令:
w:写磁盘文件
wq:写入并退出
x:写入并退出
X:加密
q:退出
q!:不存盘退出,及时更改都将丢失
r FILENAME:读文件内容到当前文件中
w FILENAME:将当前文件内容写入另一个文件
!CMD:执行命令
r!CMD:读入命令的输出

地址定界格式:
#:具体第#行,例如2表示第2行
#,#:从左侧#表示起始行,到右侧#表示结尾行
#,+#:从左侧#表示的起始行,加上右侧#表示的行数
.:当前行
:最后一行.,:最后一行 .,:最后一行.,-1:当前行到倒数第二行
%:全文,相当于1,$
/pattern/:从当前行向下查找,直到匹配pattern的第一行,即:正则表达式
/pattern1/,/pattern2/:从第一次被parttern1模式匹配到的行开始,一直到第一次被pattern2匹配到的行结束
#,/pattern/:从指定行开始,一直找到第一个匹配pattern的行结束
/pattern/,$:向下找到第一个匹配pattern的行到整个文件的结尾的所有行

地址定界后跟一个编辑命令:
d:删除
y:复制
w file:将范围内的行另存至指定文件中
r file:在指定位置插入指定文件中的所有内容

查找并替换:
格式:
s/要查找的内容/替换为的内容/修饰符
说明:
要查找的内容:可使用基本正则表达式模式
替换为的内容:不能使用模式,但可以使用\1,\2,…等后向引用符号,还可以使用"&"引用前面查找是查找到的整个内容
修饰符:
i:忽略大小写
g:全局替换,默认情况下,每一行只替换第一次出现
gc:全局替换,每次替换前询问

定制vim的工作特性:
末行模式的配置只是对当前vim进程有效,可将配置存放在文件(/etc/vimrc全局,~/.vimrc个人)中持久保存

行号:
显示行号:set nu
取消显示行号:set nonu
忽略字符的大小写:
启用:set ignorecase,简写:set ic
不忽略:set noic
自动缩进:
启用:set autoindent,简写:set ai
禁用:set noai
复制保留格式:
启用:set paste
禁用:set nopaste
显示Tab和换行符^|和$显示:
启用:set list
禁用:set nolist
高亮搜索:
启用:set hlsearch
禁用:set nohlsearch
语法高亮:
启用:syntax on
禁用:syntax off
文件格式:
启用windows格式:set fileformat=dos,简写:set ff=dos
启用unix格式:set fileformat=unix,简写:set ff=unix
Tab用空格代替:
启用:set expandtab 默认为8个空格代替Tab,简写:set et
禁用:set noexpandtab,简写:set noet
Tab用指定空格的个数代替:
启用:set tabstop=# 指定#个空格代替Tab
简写:set ts=4
设置文本宽度:
set textwidth=65
set wrapmargin=15
设置光标所在行的标识线:
启用:set cursorline,简写:set cul
禁用:set nocursorline,简写:set nocul
加密:
启用:set key=password
禁用:set key=

命令模式:
大量快捷键
1.退出VIM
ZZ:保存退出
ZQ:不保存退出
2.光标跳转
(1)字符间跳转
h:左 j:下 k:上 l:右
#CMD:跳转由#指定的个数的字符
(2)单词间跳转
w:下一个单词的词首
e:当前或下一个单词的词尾
b:当前或上一个单词的词首
#CMD:由#指定一次跳转的单词数
(3)当前页跳转
H:页首 M:页中间行 L:页底
zt:将光标所在当前行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行一道屏幕底端
(4)行首行尾跳转
^:跳转至行首的第一个非空白字符
0:跳转至行首
$:跳转至行尾
(5) 行间移动
#G 或者末行模式下:# 跳转至第#行
G:最后一行
1G,gg:第一行
(6)句间移动
):下一句 (:上一句
(7)段落间移动
}:下一段 {:上一段
(8)命令模式翻屏操作
ctrl+f:向文件尾部翻一屏
ctrl+b:向文件首部翻一屏
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏

字符编辑:
x:删除光标处的字符
#x:删除光标处起始的#个字符
xp:交换光标所在处的字符及其后面字符的位置
~:转换大小写
J:删除当前行后的换行符
替换命令(replace):
r:只替换光标所在处的一个字符
R:切换成REPLACE模式

删除命令(delete):
d:删除命令,可结合光标跳转字符,实现范围删除
dKaTeX parse error: Expected 'EOF', got '#' at position 106: … dd:剪切光标所在的行 #̲dd:多行删除 D:从当前光…

复制命令(yank):
y:复制,行为类似于d命令
y$:复制到行尾
y0:复制到行首
y^:复制到非空行行首
ye:从当前光标所在处起始向后复制单词(不包括空格)
yw:从当前光标所在处起始向后复制单词(包括空格)
yb:从当前光标所在处起始向前复制单词
yy:复制行
#yy:复制多行
Y:复制整行

粘贴命令(paste):
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
P:缓存区存的如果为整行,则粘贴当前光标所在行的上方,否则,则粘贴至当前光标所在处的前面

改变命令(change):
c:删除后切换成插入模式
cKaTeX parse error: Expected 'EOF', got '#' at position 51: …行,并输入新内容,相当于S #̲cc: C:删除当前光标到行…

查找:
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向

撤销更改:
u:撤销最近的更改
#u:撤销之前多次更改
U:撤销光标落在这行后所有此行的更改
ctrl+r:重做最后的撤销更改
.:重复前一个操作
#.:重复前一个操作#次

高级用法:
常见CMD:y复制,d删除,gU变大写,gu变小写
di" 光标在"“之间,则删除”"之间的内容
yi( 光标在()之间,则复制()之间的内容
vi[ 光标在[]之间,则选中[]之间的内容
dtx 删除字符直到遇见光标之后的第一个x字符
ytx 复制字符直到遇见光标之后的第一个x字符

可视化模式:
允许选择的文本块:
v:面向字符
V:面向整行
ctrl+v:面向块
可视化键可用于移动键结合使用
w ) } 箭头等
突出显示的文字可被删除,复制,变更,过滤,搜索,替换等

多文件模式:
vim FILE1 FILE2 FILE3…
:next 下一个
:prev 前一个
:first 第一个
:last 最后一个
:wall 保存所有
:qall 不保存退出所有
:wqall 保存退出所有

多窗口模式:
vim -o|-O FILE1 FILE2 …
-o:水平或上下分割
-O:垂直或左右分割
在窗口间切换:ctrl+w,箭头

单文件窗口分割:
ctrl+w,s:水平分割,上下分屏
ctrl+w,v:垂直分割,左右分屏
ctrl+w,q:取消相邻窗口
ctrl+w,o:取消全部窗口

编辑二进制文件:
#以二进制方式打开文件
vim -b binaryfile
#末行模式下,利用xxd命令转换为可读的十六进制
:%!xxd
#切换至插入模式下,编辑二进制文件
#切换至末行模式下,利用xxd命令转换回二进制
:%!xxd -r
#保存退出

文本常见处理工具:
cat:可以查看文本内容
格式:
cat [OPTION]… [FILE]…
常见选项:
-E:显示行结束符$
-A:显示所有控制符
-n:对显示出的每一行进行编号
-b:非空行编号
-s:压缩连续的空行成一行

nl:显示非空行的行号,相当于cat -b

tac:逆向显示文本内容

rev:将同一行的内容逆向显示

查看非文本文件内容:
hexdump
-C:以规范的十六进制+ASCII显示
-n:仅解释输入的字符长度

od:以八进制和其它格式转储文件
-t:输出格式
范例:echo {a…z} |tr -d ’ '|od -t x1z

xxd:进行十六进制转储或执行相反操作
范例:echo {a…z}|tr -d ’ '|xdd

分页查看文件内容:
more:可以实现分页查看文件,可配合管道实现输出信息的分页
格式:
more [OPTIONS…] FILE…
-d:显示翻页及退出提示

less:可实现分页查看文件或STDIN输出,less命令是man命令使用的分页器
查看时有用的命令包括:
/文本 搜索 文本
n/N 调到下一个 或 上一个匹配

显示文本前或后行内容
head:可以显示文件或标准输入的前面行
格式:
head [OPTION]… [FILE]…
选项:
-c # 指定获取前#字节
-n # 指定获取前#行
范例:
head -3 /etc/passwd
head -n -3 /etc/passwd

tail:查看文件或标准输入的倒数行
格式:
tail [OPTION]… [FILE]…
常用选项:
-c # 指定获取后#字节
-n # 指定获取后#行
-f:跟踪显示文件fd新追加的内容,常用于日志监控,相当于–follow=descriptor,当文件删除再新建同名文件,将无法继续跟踪文件
-F:跟踪文件名,相当于–follow=name --retry,当文件删除再新建同名文件,将可以继续跟踪文件

tailf 类似tail -f,当文件不增长时并不访问文件

范例:
tail -3 /var/log/messages
tail -f /var/log/messages
只查看最新发生的日志:
tail -fn0 /var/log/messages
tail -0f /var/log/messages

按列抽取文本cut:
cut:可以提取文本文件或stdin数据的指定列
格式:
cut [OPTION]… [FILE]…
常用选项:
-d DELIMITER:指明分隔符,默认为Tab
-f FILEDS:
#:第#个字符,例如:3
#,#[,#]:离散的多个字段,例如:1,3,6
#-#:连续的多个字段,例如:1-6
混合使用:1-3,7
-c:按字符切割
–output-delimiter=STRING指定输出分隔符

合并多个文件paste:
paste可以合并多个文件同行号的列到一行
格式:
paste [option]… [FILE]…
常用选项:
-d 分隔符:指定分隔符,默认用Tab
-s:所有行和成一行显示

收集文本统计数据wc:
wc:可用于统计文件的行总数、单词总数、字节总数和字符总数
常用选项:
-l:只计数行数
-w:只计数单词总数
-c:只计数字节总数
-m:只计数字符总数
-L:显示文件中最长行的长度

文本排序sort:
格式:
sort [OPTIONS] file(s)
常用选项:
-r:执行反方向(由上至下)整理
-R:随机排序
-n:执行按数字大小整理
-h:人类可读排序,如:2k 1G
-f:选项忽略(fold)字符串中的字符大小写
-u:选项,合并重复项,即去重
-t c:选用c作为字段界定符
-k #:按照使用c字符分隔的#列来整理能够使用多次
范例:cut -d: -f1,3 /etc/passwd|sort -t: -k2 -nr |head -n3

uniq:从输入中删除前后相接的重复的行
格式:
uniq [OPTION]… [FILE]…
常见选项:
-c:显示每行重复出现的次数
-d:仅显示重复过的行
-u:仅显示不曾重复的行
uniq常和sort命令一起配合使用:
范例:
sort userlist.txt | uniq -c

diff:比较两个文件之间的区别
-u:用来输出"统一的"diff格式文件,最适用于补丁文件

patch:复制在其它文件中进行的改变
-b:来自动备份改变了的文件
diff常和patch一起使用
范例:
diff -u foo.conf foo2.conf > foo.patch
patch -b foo.conf foo.patch

cmp:查看二进制文件的不同

正则表达式:
由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中的字符

正则表达式分两类:
基本正则表达式:BRE
扩展正则表达式:ERE
正则表达式的元字符分类:字符匹配、匹配次数、位置锚定、分组

字符匹配:
. 匹配任意单个字符,可以是一个汉字
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 字母
[:lower:] 小写字母
[:upper:] 大写字母
[:blank:] 空白字符
[:space:] 水平和垂直的空白字符
[:cntrl:] 不可打印的控制字符
[:digit:] 十进制数字
[:xdigit:] 十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号

匹配次数:
用在要指定次数的字符后面,用于指定前面的字符要出现的次数

:匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
.
:任意长度的任意字符
?:匹配其前面的字符0或1次,即:可有可无
+:匹配其前面的字符至少1次,即:肯定有>=1
{n}:匹配前面的字符n次
{m,n}:匹配前面的字符至少m次,至多n次
{,n}:匹配前面的字符至多n次,<=n
{n,}:匹配前面的字符至少n次

位置锚定:可以用于定位出现的位置
^:行首锚定,用于模式的最左侧
:行尾锚定,用于模式的最右侧PATTERN:行尾锚定,用于模式的最右侧 ^PATTERN:行尾锚定,用于模式的最右侧PATTERN:用于模式匹配整行
^:空行[[:space:]]∗:空行 ^[[:space:]]*:空行[[:space:]]∗:空白行
< 或 \b:词首锚定,用于单词模式的左侧 注意:单词:以数字,字母,下划线组成
> 或 \b:词尾锚定,用于单词模式的右侧
<PATTERN>:匹配整个单词

分组:将多个字符捆绑在一起,当作一个整体处理,如:(root)+

反向引用:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命令方式为:\1,\2,\3,…
\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
示例:
(string1(string2))
\1:string1(string2)
\2:string2
注意:反向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身

或者:|
示例:
a|b a或b
C|cat C或cat
(C|c)at Cat或cat

扩展正则表达式:
字符匹配元字符:
. 任意单个字符
[wang] 指定范围内的字符
[^wang] 不在指定范围内的字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母,示例:[[:lower:]],相当于[a-z]
[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
[:digit:] 十进制数字
[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号

次数匹配:

  • 匹配前面字符任意次
    ? 0或1次
  • 1次或多次
    {n} 匹配n次
    {m,n} 至少m,至多n次

位置锚定:
^ 行首
$ 行尾
<, \b 语首
>, \b 语尾

分组:
() 分组
后向引用:\1, \2, …
| 或者
a|b #a或b
C|cat #C或cat
(C|c)at #Cat或cat

grep:全局搜索正则表达式和打印匹配到的行
作用:文本搜索工具,根据用户指定的"模式"对目标文本逐行进行匹配检查;打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件
格式:
grep [OPTIONS] PATTERN [FILE…]
常见选项:
-color=auto 对匹配到的文本着色显示
-m # 匹配#次后停止
-v:显示不被pattern匹配到的行
-i:忽略字符大小写
-n:显示匹配的行号
-c:统计匹配的行数
-o 仅显示匹配到的字符串
-q 静默模式,不输出任何信息
-A # after, 后#行
-B # before, 前#行
-C # context, 前后各#行
-e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ’ -e ‘dog’ file
-w 匹配整个单词
-E 使用ERE,相当于egrep
-F 不支持正则表达式,相当于fgrep
-f file 根据模式文件处理
-r 递归目录,但不处理软链接
-R 递归目录,但处理软链接

sed:
sed 即 Stream EDitor,和 vi 不同,sed是行编辑器
Sed是从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行,直到
最后一行。每当处理一行时,把当前处理的行存储在临时缓冲区中,称为模式空间(Pattern
Space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下
一行,这样不断重复,直到文件末尾。一次处理一行的设计模式使得sed性能很高,sed在读取大文件时
不会出现卡顿的现象。如果使用vi命令打开几十M上百M的文件,明显会出现有卡顿的现象,这是因为
vi命令打开文件是一次性将文件加载到内存,然后再打开。Sed就避免了这种情况,一行一行的处理,
打开速度非常快,执行速度也很快

sed基本用法:
格式:
sed [option]… ‘script;script;…’ inputfile…
常用选项:
-n;不输出模式空间内容到屏幕,即不自动打印
-e:多点编辑
-f FILE:从指定文件中读取编辑脚本
-r,-E:使用扩展正则表达式
-i.bak:备份文件并原处编辑

script:
‘地址命令’
地址格式:
1.不给地址:对全文进行处理
2.单地址:
#:指定的行,$:最后一行
/pattern/:被此处模式所能够匹配到的每一行
3.地址范围:
#,#:从#行到第#行,3,6 从第3行到第6行
#,+#:从#行到+#行,3,+4 从第3行到第7行
/pat1/,/pat2/
#,/pat/
4.步进:~
1~2:奇数行
2~2:偶数行

命令:
p 打印当前模式空间内容,追加到默认输出之后
Ip 忽略大小写输出
d 删除模式空间匹配的行,并立即启用下一轮循环
a [\]text 在指定行后面追加文本,支持使用\n实现多行追加
i [\]text 在行前面插入文本
c [\]text 替换行为单行或多行文本
w file 保存模式匹配的行至指定文件
r file 读取指定文件的文本至模式空间中匹配到的行后
= 为模式空间中的行打印行号
! 模式空间中匹配行取反处理
s/pattern/string/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###
替换修饰符:
g 行内全局替换
p 显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中
I,i 忽略大小写

sed高级用法:
sed除了模式空间外,还另外支持保持空间,利用此空间,可以将模式空间中的数据,临时保存至保持空间,从而后续接着处理,实现更为强大的功能。
常见的高级命令:
P 打印模式空间开端至\n内容,并追加到默认输出之前
h 把模式空间中的内容覆盖至保持空间中
H 把模式空间中的内容追加至保持空间中
g 从保持空间取出数据覆盖至模式空间
G 从保持空间取出内容追加至模式空间
x 把模式空间中的内容与保持空间中的内容进行互换
n 读取匹配到的行的下一行覆盖至模式空间
N 读取匹配到的行的下一行追加至模式空间
d 删除模式空间中的行
D 如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本,并不会读取新的输入行,而使
用合成的模式空间重新启动循环。如果模式空间不包含换行符,则会像发出d命令那样启动正常的新循环

文本处理工具和正则表达式相关推荐

  1. Linux文本处理工具和正则表达式

    成功不易,加倍努力! 1 文本编辑工具之神VIM 1.1命令或普通(Normal)模式的基本命令 1.2 插入(Insert)或编辑模式的基本命令 1.3 扩展命令模式基本命令 1.4 vim的寄存器 ...

  2. 第六章,文本处理工具和正则表达式

    更多笔记点击查看 Linux学习从入门到打死也不放弃,完全笔记整理(持续更新) https://blog.51cto.com/13683480/2095439 笔记整理起始时间:2018年4月7日14 ...

  3. Shell程序设计 | 文本处理工具 :正则表达式、grep、sed、awk

    文章目录 正则表达式 grep sed awk 其它常用工具 cut sort uniq tr 常见面试题 第十行 有效电话号码 统计词频 转置文件 要想使用这些流式处理工具,那么就必须得了解正则表达 ...

  4. 文本处理工具及正则表达式

    1.文本处理工具 1)cat命令 cat: 1.作用:将一个或多个文件或标准输入连接,并输出至标准输出,常用来查看文本文件内容 2.参数: -E:用$表示行尾 -n:对所有行加行号 -s:相邻空行为一 ...

  5. linux隔行打印文本,详解正则表达式及Linux三大文本处理工具

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具但却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了. 一.正则表达式 1.匹配字符的类型 [ ...

  6. Shell第二篇:正则表达式和文本处理工具

    一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 生活中处处都是正则:     比如我们描述:4条腿   ...

  7. 文本处理工具--正则表达式

    在学习linux中文本搜索是很重要的 对于初学者来说如何快速学会运用正则表达式相当重要的. 文本搜索工具,根据用户指定的文本搜索模式(搜索条件)对目标进行逐行搜索,显示能匹配的行. 文本搜索: gre ...

  8. 正则表达式和文本处理工具

    一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 生活中处处都是正则:     比如我们描述:4条腿   ...

  9. Linux正则表达式和文本处理工具(gred、awk、sed)

    使用Linux 的 gred.awk.sed 可以方便得处理文本,然而若要灵活使用这三个工具,首先必须理解正则表达式.这里先对正则表达式进行学习,做点记录,之后再练习一下文本处理工具的使用. 正则表达 ...

最新文章

  1. 经常会提到的Java面试题
  2. 13、ActiveX控件
  3. 客户端界面实现及登录功能实现
  4. Jena+fuseki安装配置教程
  5. 【HDU - 2639】Bone Collector II (第K大背包,dp,STLset)
  6. 《网友世界》杂志:2010“最不给力”软件
  7. SpringBoot学习---整合JDBC,Druid,MyBatis
  8. Java飞机大战超全版(plus版)
  9. Android studio配置Google play服务
  10. 按120分计算成绩 mysql_mySql数据库基础
  11. android 键盘按键监听
  12. 红黑树模拟软件_红黑树,超强动静图详解,简单易懂
  13. 帆软(FineReport)主子报表(报表联动)
  14. 如何系统化设计销售队伍规模,确保企业最大的投入产出比
  15. [Win32] 窗体暗色模式, C++, WinForm, WPF 使用方法, 判断颜色模式, 响应颜色变更消息, 设置标题栏暗色.
  16. win7下计算机假死,win7系统电脑假死机怎么办
  17. 海康大华宇视等等安防监控摄像头转成WebRTC流实现Web浏览器超低延迟无插件直播新方案...
  18. 获取视频网站上视频的缩略图以及其他信息
  19. kaggle比赛_前7%_预测分子中原子对之间的作用力_Predicting Molecular Properties
  20. 攻击 | 破解windows7密码(利用5次shift漏洞破解win7密码)

热门文章

  1. 设置控制台应用程序运行时不弹出控制台
  2. 攀比之于人生是一种怎样的存在
  3. 史上最全linux语法汇总,教你一文掌握linux
  4. Netty使用前传-IO模型
  5. java 导出个性 excel 表格
  6. visio 怎么画出加法器(一个圆圈 里面一个加号)和乘法器(一个圆圈里面一个乘号)
  7. 如何保护你的电脑免受网络攻击
  8. tomcat 性能调优
  9. pyspark实践之 map/flatMap应用示例
  10. 中老年网民图鉴:社交圈里圈外的互联网生活洞察