更多笔记点击查看

Linux学习从入门到打死也不放弃,完全笔记整理(持续更新)

https://blog.51cto.com/13683480/2095439

笔记整理起始时间:2018年4月7日14:15:07

本章内容:

各种文本工具来查看、分析、统计文本

cat,tac,rev,more,less,head,tail,cut,paste,wc,uniq,sort,diff

grep

正则表达式

扩展正则表达式

vim

支持标准输入的命令|

cat tr mail bc

more less head tail cut wc sort uniq grep

抽取文本的工具

文本内容:less和cat

文本截取:head和tail

按列抽取:cut

按关键字抽取:grep

文件查看命令:

cat,tac,rev

cat -E           显示行结束符$

-n           对显示出的每一行进行编号

-A          显示所有控制符

-b          非空行编号

-s           压缩连续的空行成一行

tac file    上下反向查看文件

rev file    左右反向查看文件

分页查看文件内容:

more:                 分页查看文件

more -d file    显示翻页及退出提示

less                 一页一页地查看文件或stdin输出

查看时有用的命令包括:

/文本       搜索文本

n/N        跳到下一个或上一个匹配

less命令为man命令默认使用的分页工具

显示文本前或后行内容

head file         默认查看文件前10行

-c1000           指定获取前1000字节

-n#               指定获取前#行

-#                 指定前#数 (跟-n#好像没什么不同)

tail file            默认查看文件后10行

-c50              指定获取后50个字节

-n#               指定获取后#行

-#                  指定获取后#行

-f                   跟踪显示文件fd新追加的内容,常用于日志监控

但是文件如果被删除,无法发现

-F                   跟踪文件名,相当于--follow=name  --retry

当文件被删除时会受到提示

tailf file          类似于tail -f,当文件不增长(比如删除)时并不访问文件

按列抽取文本cut,合并文件paste

cut [option]...[file]...

-d“”          指明分隔符,默认tab

-f filed    指明第几列

#                   第#个字段

1,5                 第1和第5列

1-5                第1-5列

1-3,5             第123,5列

-c1-15,              按字符切割

cut -d: -f6-7 /etc/passwd

以冒号为分隔符取/etc/passwd的第6-7列

cut -d: -f1,7 /etc/passwd /etc/shadow|cat -n

以冒号为单位/etc/passwd和/etc/shadow的第1和第7列 且显示行数

--output-delimiter=STRING        指定输出分隔符

如:

cut  -d: -f1-3 --output-delimiter=@  /etc/passwd

以:为分隔符取etc/passwd 第1-3列,且输出以@为分隔符

cut -c1-14,30-45 /etc/profile

取/etc/profile 每行1-14 30-45个字符

paste [option]...[file]...     合并两个文件同行号的列到一行

-d"" 指定分隔符,默认用tab

-s          所有的行合成一行显示

paste f1 f2             行合并

paste -s f1 f2       列显示变行显示

分析文本的工具:

wc:文本数据统计

计算单词总数,行总数,字节总数和字符总数

可以对文件或者stdin中的数据运行

wc /etc/profile

76           252       1795       /etc/profile

行数       单词数    字节数

常用选项

-l     只计算行数

-w   只计算单词总数

-c 只计算字节总数

-m 只计算字符总数

-L 显示文件中最长行的长度

sort:文本排序sort

把整理过的文本显示在stdout,不改变原始文件

sort files       默认是按字符排序文件

常用选项:

-r   反向排序

-R   随即排序

-n   执行按数字大小整理

-f    选项忽略(fold)字符串中的字符大小写

-u   选项(独特,unique)删除输出中的重复行

-t"#"       使用#作为字段界定符

-k"X"      按照使用#字符分隔的第X列来整理,能够使用多次

例:

cut -d: -f1-3  /etc/passwd|sort -t: -k3 -n

以:为分隔符取/etc/passwd前3列,且按照uid数字大小排序

uniq命令:

uniq:从输入中删除前后相接的重复的行

uniq [option]...[file]...

-c            显示每行重复出现的次数

-d          仅显示重复过的行

-u        仅显示不曾重复的行

注意:连续且完全相同方为重复

常和sort命令一起配合使用:

sort userlist.txt |uniq -c

比较文件:

比较两个文件之间的区别

diff file1 file2

比较文件,会标记不同的行

1,51c1,51,表示1-51行有区别

diff命令的输出被保存在一种叫做“补丁“的文件中

使用  -u  选项来输出“统一的(unified)"diff格式文件,最适合用于补丁文件

patch 复制在其他文件中进行的改变(要慎重使用)

适用  -b 选项来自动备份改变了的文件

例:

diff -u f11 f22 > f33.diff

rm -rf file1

patch -b f22 f33.diff

使用f11 f22的diff文件f33.diff恢复f11文件

原f22文件会被改名备份为f22.orig,f22文件即为原f11文件

练习1:

1.找出ifconfig 网卡名 命令结果中本机的IPv4地址

ifconfig ens33|head -n2|tail -n1|tr -s " " |cut -d" "  -f3

2.查出分区空间使用率的最大百分比值

df|tr -s " " "%"|cut -d"%" -f5|sort -nr|head -n2|tail  -n1

3.查出用户UID最大值的用户名、UID及shell类型

cat /etc/passwd|cut -d: -f1,3,7|sort -nr -t":" -k2|head  -1

4.查出/tmp的权限,以数字方式显示

stat /tmp|head -n4|tail -1|cut -d: -f2|tr -dc "[:digit:]\n"

5.统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序

netstat -nt|tr -s " "|cut -d" " -f5|uniq -c|tr -s ' ' |sort -nr

-c"" -k2

cat access_log |cut -d' ' -f1|sort|uniq -c|sort -nr

Linux文本处理三剑客

grep:文本过滤(模式:pattern)工具

grep,egrep,fgrep(不支持正则表达式搜索)

sed:stream editor,文本编辑工具

awk:linux上的实现gawk,文本报告生成器

grep:Global search  Regular expression and Print out the line

作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查

打印匹配到的行

模式:由正则表达式字符及文本字符所编写的过滤条件

grep [options] pattern [file]...

例:

grep root /etc/passwd          在/etc/passwd 中搜索含有root的行并输出

grep "$USER" /etc/passwd    在/etc/passwd中搜索当前用户,并输出行

grep '$USER' /etc/passwd    在/etc/passwd中搜索字符$USER,并输出行

grep `whoami`  /etc/passwd 支持命令调用如`whoami`

ls |grep ok                                 在ls的输出结果中匹配含有“ok”的选项并输出

--color=auto:      对匹配到的文本着色显示

-v                          取反,显示不被pattern匹配到的行

-i                           忽略字符大小写

-n                         显示匹配的行数

-c                          统计匹配的行数,仅显示行数,不输出匹配到的信息

-o                         仅显示匹配到的字符串

-q                         静默模式,不输出任何信息,

结果存在变量 $? 中,有匹配为0,没有匹配为1

-A#:after         连同匹配到的行数的后#行一起输出

-B#:befor           连同匹配到的行数的前#行一起输出

-C#:context 前后#行一起输出

-e:                     实现多个选项间的逻辑or关系

grep -e 'cat' -e 'dog' file

-w                         匹配整个单词,仅包含的不输出,如只匹配roo,就不会输出root

字母数字下划线都算单词的一部分,其他符号为分隔符

-E                          使用ERE(扩展正则表达式)

-F                          相当于fgrep,不支持正则表达式

grep -f  file 匹配文件中的pattern,或关系

i 特殊显示,会在行首显示文件名

$?,存储上一个命令的返回值,ture为 0,错误为非0

正则表达式:

man 7 regex

regexp:由一类特殊字符及文本字符所编写的模式(pattern),其中有些字符

(元字符)不表示字符字面意义,而表示控制或通配的功能

程序支持:grep,sed,awk,vim,less,nginx,varnish等

分两类:

基本正则表达式:BRE

扩展正则表达式:ERE

grep -E ,  egrep支持扩展正则表达式

正则表达式引擎:

采用不同算法,检查处理正则表达式的软件模块

PCRE(Perl Compatible Regular  Expreesions)

元字符分类:

字符匹配,匹配次数,位置锚定,分组

字符匹配:

.                     匹配任意单个字符

[abcA-Z1-5]    匹配指定范围内的任意单个字符

[^abc]             匹配指定范围外的任意单个字符

[:alnum:] 字母和数字

[:alpha:]  代表任何英文大小写字符,A-Z,a-z

[:lower:]  小写字母

[:upper:]  大写字母

[:digit:]    十进制数字

[:xdigit:]   十六进制数字

[:blank:]  空白字符(空白和制表符)

[:space:]  水平和垂直的空白字符(比[:blank:]包含的范围广)

[:cntrl:]     不可打印的控制字符(退格,删除,警铃。。。)

[:graph:]  可打印的非空白字符

[:print:]    可打印字符

[:punct:]  标点符号

例:

ls|grep ...      显示所有三个字符,多余部分不会标红

ls|grep "..."     显示3个字符组成的单词

ps:[.]放在中括号里面就是.本身

匹配次数:

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

*              匹配前面的字符任意次,包括0次

贪婪模式:尽可能长的匹配

.*             任意长度的任意字符

\?           匹配其前面的字符0次或1次

\+           匹配其前面的字符至少1次

\{n\} 匹配前面的字符n次

\{m,n\}     匹配其前面的字符至少每次,至多n次

\{,n\}        匹配前面出现的字符至多n次

\{n,\}        匹配前面出现的字符至少n次

位置锚定:

定位出现的位置

^                                  行首锚定,用于模式的最左侧

$                                  行尾锚定,用于模式的最右侧

^pattern$                     用于模式匹配整行

^$                               空行

^[[:space:]]*$         空白行

\< \b                            词尾锚定,用于单词模式的左侧

\> \b                            词尾锚定,用于整个单词的右侧

\<pattern\>                  匹配整个单词

分组:

\(\)   将一个或者多个字符捆绑在一起,当做一个整体进行处理,如:

\(root\)\+               匹配root最少出现一次

echo rootroot  |grep -o  "\(root\)\+"

分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中

这些变量的命名方式为;\1, \2, \3...

echo rootpppproot|grep -o  "\(root\).*\1"

\1    表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符

示例:

\(string1\+\(string2\)*\)

\1:string\+\(string2\)*

\2:string2

后项引用:引用前面的分组括号中的模式所匹配的字符,而非模式本身

或者:\|

示例a\|b a或b

C\|cat             C或cat

\(C\|c\)at Cat或cat

练习2:

1.显示/proc/meminfo文件中以大小s开头的行(要求使用两种方法)

cat /proc/meminfo |grep -i ^s

cat /proc/meminfo |grep "\(^s.*\)\|\(^S.*\)"

2.显示/etc/passwd文件中不以/bin/bash结尾的行

cat /etc/passwd|grep -v "/bin/bash\>"

3.显示用户hello默认的shell程序

getent passwd hello|cut -d: -f7

getent passwd hello|grep -o "/.*\>"

4.找出/etc/passwd文的两位或三位数

cat /etc/passwd|grep -o "\<[0-9]\{2,3\}\>"|cat -n

5.显示Centos7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面

有非空白字符的行

cat /etc/grub2.cfg|grep "^[[:space:]]\+.*..*$"

6.找出"netstat-tan"命令结果中以LISTEN后跟任意多个空白字符结尾的行

netstat -tan|grep "LISTEN[[:space:]]\+$"

7.显示CentOS7上所有系统用户的用户名和UID

getent passwd|cut -d: -f1,3

8.添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin)

找出/etc/passwd用户名和shell同名的行

getent passwd|grep "^\(..*\)\>.*\<\1$"

9.利用df和grep,取出磁盘各分区利用率,并从大到小排序

df|grep dev/sd|tr -s ' ' |cut -d' ' -f1,5|sort -t' ' -k2  -nr

保留磁盘名称

df|grep dev/sd|grep -o "[0-9]\+%"|sort  -nr

不保留磁盘名称

egrep:

egrep = grep -E

egoup [options] pattern [file...]

支持扩展的正则表达式

扩展的正则表达式的元字符:

字符匹配:

.                     任意单个字符

[abc]               指定范围的字符

[^abc]            不在指定范围的字符

[:alnum:] 。。。。

次数匹配:

*                     匹配前面字符任意次

?                   匹配前面字符0或1次

+                    1次或多次

{m}                匹配m次

{m,n}             至少m次,至多n次

位置锚定:

^                   行首

$                   行尾

\< \b              单词首

\> \ba             单词尾

分组:

()               分组

\1,\2              后项引用

或者:

a|b                 a或者b

C|cat              C或cat

(C|c)at    Cat或cat

练习3:

1.显示三个用户root、mage、wang的UID和默认shell

cat /etc/passwd|egrep "^(root)\>|^(hello)\>|^(lily)"|cut -d:  -f1,3,7

getent passwd root hello lily|cut -d: -f1,3,7

2.找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟

一个小括号的行

cat /etc/rc.d/init.d/functions |egrep  "^[[:alpha:]]+.*\>\(\)"

3.使用egrep取出/etc/rc.d/init.d/functions中其基名和目录名

echo /etc/init.d/functions/ |egrep -o  "\<[[:alpha:]]+/?$"

echo /etc/init.d/functions |egrep -o  "/.*\>/"

5.统计last命令中以root登录的每个主机IP地址登录次数

last|egrep "^root\>"|tr -s ' ' |cut -d' ' -f3|sort|uniq  -c

6.利用扩展正则表达式分别表示0-9,10-99,100-199,200-249,250-255

[0-9]       [1-9][0-9] 1[0-9][0-9]    2[0-4][0-9]      25[0-5]

7.显示ifconfig命令结果中所有ipv4地址

ifconfig |egrep -o "\<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"

ifconfig |egrep -o "\<(([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"

8.将此字符串:welcome to magedu linux  中的每个字符去重并排序,重复次数

多的排到前面

echo welcome to magede linux|tr -d ' '|grep -o  .|sort|uniq -c|sort -nr

vim简介:

vi:visual interface,文本编辑器

文本:ASCII,unicode

文本编辑种类:

行编辑器:sed

全屏编辑器:nano,vi

vim:vi improved

其他编辑器:

gedit       一个简单的图形编辑器

gvim       一个vim编辑器的图形版本

vim:打开文件

vim [option]...file...

vim +# file             打开文件后,让光标处于第#行的行首,

+                   默认最后一行的的行首

+/pattern              打开文件后,直接让光标处于第一个被pattern匹配到的

行的行首

-b   file          二进制方式打开文件

-d file1 file2... 比较多个文件,会显示不同的位置

-m file          只读打开文件

ex file 或者vim -e       直接进入ex模式

如果该文件存在,文件被打开并显示内容

如果该文件不存在,当编辑后第一次存盘时创建文件

vim:模式

三种主要模式:

命令(normal)模式:默认模式,移动光标,剪切/粘贴文本

插入(insert)或编辑(edit)模式:修改文本

扩展命令(extended command)模式:保存,退出等

R:改写模式

Esc键退出当前模式

ese ese 总是返回到命令模式

模式转换:

命令模式-->插入模式

i:insert,在光标所在处输入

I:在当前光标所在行的行首输入

a:append,在光标所在处后面输入

A:在当前光标所在行的行尾输入

o:在当前光标所在行的下方打出一个新行

O:在当前光标所在行的上方打开一个新行

插入模式-->命令模式

Esc

命令模式-->扩展命令模式

扩展命令模式-->命令模式

Esc,enter

关闭文件:

扩展模式:

:q                 退出

:q!         强制退出,丢弃做出的修改

:wq              保存退出

:x                 保存退出

命令模式:

ZZ                 保存退出

ZQ                不保存退出

扩展模式:

:进入ex模式

创建一个命令提示符:处于底部的屏幕左侧

命令:

w                   写(存)磁盘文件

wq                  写入并退出

x                     写入并退出

q                   退出

q!                 不存盘退出,即使更改都将丢失

r filename       读文件内容到当前文件中

w filename      将当年文件内容写入另一个文件

!cmd               执行命令

r!cmd             读入命令的输出

命令模式光标跳转:

字符间跳转:

h:   左

l:    右

j:    下

k:    上

#command:跳转由#指定的个数的字符

比如33j,向下跳33行

单词间跳转:

w:下一个单词的词首

e:当前或下一个单词的词尾

b:当前或前一个单词的词首

#cmd:由#指定一次跳转的单词数

当前页跳转:

H: 页首

M:页中间行

L:   页底

行首行尾跳转:

^:    跳转至行首的第一个非空白字符

0:   跳转至行尾

$:     跳转至行尾

行间移动:

##G,(扩展模式:#):      跳转至由##指定行

G:                                     最后一行

1G,gg                                  第一行

句间移动

)      下一句

(      上一句

段落间移动:

}      下一段

{      上一段

命令模式:

翻屏操作:

ctrl+f             向文件尾部翻一屏

ctrl+b            向文件首部翻一屏

ctrl+d            向下半屏

ctrl+u           向上半屏

字符编辑:

x                     删除光标处字符

#x                  删除光标处起始的#个字符

xp                   交换光标所在处的字符及其后面字符的位置

~                    转化大小写

J                     删除当前行后的换行符

替换命令:

r                     替换光标所在处的字符

R                  切换成Replace,改写模式

删除命令:

d                    删除命令,可结合光标跳转字符,实现范围删除

d$                  删除至行尾

d^                  删除到非空行首

d0                  删除到行首

dw                  向右删除一个单词

de                  向右删除一个单词

db                  向左删除一个单词

dd                  删除光标所在的行

#dd:      多行删除

D                    从当前光标位置一直删除到行尾,留空行,等同于d$

dG        :从当前行删除到最后1行
        dgg        :从当前行删除到第1行

复制命令:

y                    复制,行为相似于d命令

y$                   从光标处复制到行尾

y0                   从光标处复制到行首

y^                  复制到非空行首

ye                   拷贝后一个单词

yw

yb                  拷贝前单词

yy                   复制整行

#yy         复制多行

Y                    复制整行

yG        :从当前行复制到最后一行
        ygg        :从当前行复制到第一行

粘贴命令:

p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴

至当前光标所在处的后面

P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴

至当前光标所在处的前面

改变命令:

c:修改后切换成插入模式

命令模式--->插入模式

c$           删除至行尾,并切换成插入模式

c^

c0

cb

cw

#command

cc                   删除当前行并输入新内容

#cc         多行删除并输入新内容

C                    删除当前光标到行尾,并切换成插入模式

其他操作

100iwang【esc】         粘贴wang  100次

<stat position><command><end  position>

command:

y 复制    d 删除   gU 变大写 gu 变小写

例如:

0y$  命令意味着:

0     先到行头

y     从这里开始拷贝

$     拷贝到本行最后一个字符

ye:从当前位置拷贝到本单词的最后一个字符

扩展命令模式:

地址定界:

:start_pos,end_pos

:#  (y,d..)              具体第几行,例如:2表示第2行,可以直接进行复制、删除等

:#,@(y,d..) 从第#行起,到第@行止,执行命令

:#,+@(y,d..)      从第#起,到第#+@行

如:2+5,表示从第2行到第7行

:.                        表示当前行

:$                        最后一行

.,$-1 当前行到倒数第二行

:%                 全文

如:%d   删除全文

匹配:支持正则表达式

/pat1/,/pat2/

从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束

#,/pat/           第#行到被匹配行

/pat/,$            被匹配行到最后一行

使用方式:后跟一个编辑命令

d

y

w file             将范围内的行另存至指定文件中

r file        在指定位置插入指定文件中的所有内容

查找:

/pattern  从光标处向文件尾部查找

?pattern        从光标处向文件首部查找

n:          与命令同方向,下一个

N:         与命令反方向,上一个

查找并替换:

s      在扩展模式下完成查找替换操作

格式:

定界#.#s/要查找的内容/替换为的内容/修饰符

%s/haha/xixi/i

要查找的内容:可以使用模式

替换为的内容:不能使用模式,但可以使用\1,\2,等后项引用符号

还可以使用&引用前面查找时查找到的整个内容

如:

1,5s/haha/&ya/

将1-5行的haha替换成hahaya

%s/^\(UUID\)/#\1/

将UUID开头的行加注释,(替换成#UUID)

52s/\(feee\)/\1\1/

将第52行的feee替换成feeefeee

修饰符:

i:忽略大小写

g:全局替换;默认情况下,每一行只替换第一次出现的匹配

gc:全局替换,每次替换前询问

查找替换中的分隔符/可替换为其他字符

例如:

s@/etc@/etc/var@g

s#/boot#/root#i

练习4:

1.复制/etc/profile至/tmp/目录,用查找替换命令删除/emp/profile文件中

的行首的空白字符

:%s/^[[:space:]]\+//

2.复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为

/tmp/functions的每行开头为空白字符的行的行首添加一个#号

:%s/^\([[:space:]]\+\)/#\1/

命令模式:撤销更改

u            撤销最近的更改

#u         撤销之前多次更改

U             撤销光标落在这行后所有此行的更改

ctrl -r     重做最后一次的“撤销”更改(取消撤销)

.             重复前一个操作

n.           重复前一个操作n次

vim的寄存器:

vim有26个命名寄存器和1个无名寄存器,常存放不同的剪贴板内容,可以不同

会话间共享

(需要复制之后关掉会话然后在另外一个会话使用p,或者复制之后重新打开新会话复制。可能。。。)

寄存器名称a,b,c...z,

格式:

"寄存器名     放在数字和命令之间

如:

3"tyy       表示复制3行到t寄存器中

"tp          表示将t寄存器的内容粘贴

未指定,将使用无命名寄存器

有10个数字寄存器,用0,1,2,..,9表示,0存放最近删除内容。1存放最近删除内容,

当新的文本变更和删除时,1转存到2,2转存到3,以此类推,数字寄存器不能在

不同会话间共享

编辑二进制文件:

以二进制方式打开文件:

vim -b  binaryfile

扩展命令模式下,利用xxd转换为可读的十六进制

:%!xxd

编辑二进制文件

扩展命令模式下,利用xxd命令转换回二进制

:%!xxd  -r

保存退出

可视化模式:

允许选择的文本块:

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         取消全部窗口

:wqall                 存退

定制vim的工作特性:

配置文件:永久有效

全局:/etc/vimrc

个人:~/.vimrc

扩展模式:当前vim进程有效

(1)行号

显示:set number,简写为set  nu

取消显示:set nonumber,简写为set  nonu

(2)忽略字符的大小写

启用:set ic

不忽略:set noic

(3)自动缩进

启用:set ai

禁用:set noai

(4)智能缩进

启用:set smartdent,简写set  si

禁用:set nosi

(5)高亮搜索

启用:set hlsearch

禁用:set nohlsearch

(6)语法高亮

启用:syntax on

禁用:syntax off

(7)显示tap 和换行符 ^I 和$显示

启用:set list

禁用:set nolist

(8)文件格式

启用windows格式 set  fileformat=dos

启用unit格式:   set fileformat=unix

简写:set ff=dos|unix

(9)设置文本宽度

启用:set textwidth=65(vim  only)

禁用:set wrapmargin=15

(10)设置光标所在行的标识线

启用:set cursorline,简写cul

禁用:set no cursorline

(11)复制保留格式

启用:set paste

禁用:set nopaste

了解更多:

set帮助

:help option-list

:set or set all

vim内置帮助

vimturor 练习文件

练习5:

1.在vim中设置tap缩进为4个字符

2.复制/etc/rc.d/init.d/functions文件至/tmp目录,替换/tmp/functions

文件中的/etc/sysconfig/init为/var/log

:%s@/etc/sysconfig/init@/var/log@

3.删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行

的行首的#号

:%s@^#\([[:space:]]\+\)@\1@

笔记整理完成时间:2018年4月10日18:57:14

转载于:https://blog.51cto.com/13683480/2097209

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

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

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

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

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

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

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

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

    vim命令格式: vim [option]- FILE- 说明: 如果该文件存在,文件被打开并显示内容 如果该文件不存在,当编辑后第一次存盘时创建它 三种常见模式: 命令模式:默认模式,可以实现移动光 ...

  5. PDF Explained(翻译)第六章 文本和字体

    本文是对PDF Explained(by John Whitington)第六章<Text And Fonts >的摘要式翻译,并加入了一些自己的理解. 文本状态 文本状态相关的操作符和参 ...

  6. ii第六单元 文本处理工具

    linux中常用的基础命令 diff 命令 patch 命令 grep 命令 Cut 命令 sort 命令 uniq 命令 tr 命令 sed 命 1.diff 命令 比较两个文件的不同 用于创建补丁 ...

  7. 《Shell脚本学习指南》第四章 文本处理工具

    4.1 排序文本 4.1.1 行的排序 未提供命令行选项时,整个记录会根据当前locale所定义的次序排序. 在传统的C locale中,也就是ASCII顺序. 4.1.2 以字段排序 -k选项的后面 ...

  8. python学习笔记第六章文本词频统计

    我们这次需要解决的问题是在一篇文章中,哪一些词汇出现的最多,如何去做,我们考虑英文文本和中文的文本. 首先,我们先对哈姆雷特的英文文本进行统计词频. 1.获取文本并进行归一化 def gettext( ...

  9. HTML5学习笔记--第六章 文本元素

    HTML5学习地址链接: 我要自学网. 6-1 标题元素 <!DOCTYPE html> <html><head><meta charset="UT ...

最新文章

  1. 解决问题redis问题:ERR Client sent AUTH, but no password is set
  2. matlab 三维饼图,重新学习MATLAB——作图技法及3D可视化
  3. java标志清理_JVM内存管理之GC算法精解(五分钟让你彻底明白标记/清除算法)...
  4. [ARM异常]-armv8/armv9异步异常类型、路由、屏蔽
  5. 20170710L07-09-03老男孩Linux运维实战培训-Sersync实时同步软件实战应用指南07
  6. 用Python分析元旦旅游热门城市,告诉你哪些景点性价比更高
  7. java中byte,String,InputStream之间的转换
  8. idea 优化_JVM优化:如何利用VisualVM对高并发项目进行性能分析
  9. 七重定位是什么意思_手机后缀名Note、Mix、Mate代表什么意思?现在终于明白了...
  10. JQuery合并table单元格--有限制(table格式需要注意)
  11. unix/linux命令参考
  12. 存数据返回他的序列号id_使用excel进行数据分析
  13. JavaScript的String对象使用
  14. 轻量通用型互联网应用架构
  15. C语言-汉诺塔问题详解
  16. 感染所有html病毒代码,非常简单的病毒代码汇总
  17. 基于java springboot活动报名微信小程序源码(毕设)
  18. 1亿年轻人在Soul找到社交新选择
  19. DUXCMS 2.x学习问题(一)
  20. 一对一直播源码是什么?一对一直播平台如何成功搭建?

热门文章

  1. 全球及中国润滑油市场产销规模及营销竞争分析报告2021-2027年
  2. 中国二氧化碳激光器行业现状研究与可行性分析报告2022-2028年版
  3. windowsAPI验证上下级证书关系
  4. html5赛车小游戏,html5公路赛车小游戏
  5. NDK学习笔记-多线程与生产消费模式
  6. Python3的unittest用例按编写顺序执行
  7. flask 操作mysql的两种方式-sqlalchemy操作
  8. 移动端弹出遮罩层禁止页面滚动,遮罩里面的框允许滚动如何实现。
  9. numpy函数中的linspace
  10. python读写mysql总结