标签:用户登陆 排序 exp 编辑器 conf 没有 format command 计数
文件查看:cat [OPTION]... [FILE]...
-E:显示行结束符$
-n:对显示出的每一行进行编号
-A:显示所有控制符
-b:非空行编号
-s:压缩连续的空行成一行
tac :内容倒过来显示
rev :每行倒过来显示
more:分页查看文件
more [OPTIONS...] FILE...
-d: 显示翻页及退出提示
例:ls -R /etc/ | more ,它翻到最后就退出了
less:一页一页地查看文件或STDIN输出
查看时有用的命令包括:
/文本 :搜索 文本
n/N :跳到下一个 或 上一个匹配
less命令是man命令使用的分页器
例:ls -R /etc/ | more ,它可以上下翻页,用q退出
head [OPTION]... [FILE]...
-c # 指定获取前#字节
-n # 指定获取前#行
-# 指定行数
例:cat -n /etc/passwd | head -n 5
注意:如果文件被删除掉,如果再创建同名的文件,修改新的文件内容它也会继续显示,因为虽然不是同一个文件但文件名字一样
tailf 类似tail –f,当文件不增长时并不访问文件
例子:
14:34[root@centos7 /data]# df |tr -s " " |cut -d" " -f5|tr -d "%"
4:35[root@centos7 /data]# df|tr -s " " "%"|cut -d% -f5
上面两个结果都是:
Use
4
0
0
2
0
1
18
1
100
14:35[root@centos7 /data]# ifconfig|head -2|tail -1|tr -s " "|cut -d" " -f3
192.168.36.102
计数单词总数、行总数、字节总数和字符总数
可以对文件或STDIN中的数据运行
wc story.txt
39 237 1901 story.txt
行数 字(单词)数 字节数(大小)
常用选项
-l 只计数行数:查看多少用户wc -l /etc/passwd ,查看多少用户登陆who|wc -l
-w 只计数单词总数
-c 只计数字节总数
-m 只计数字符总数
-L 显示文件中最长行的长度
把整理过的文本显示在STDOUT,不改变原始文件
注:sort本身也是标准输入,不加选项会让你键盘输入字符,然后ctrl+d就开始排序.
sort [options] file(s)
常用选项
-r 执行反方向(由上至下)整理
-R 随机排序
-n 执行按数字大小整理
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique)删除输出中的重复行
-t c 选项使用c做为字段界定符
-k X 选项按照使用c字符分隔的X列来整理,能够使用多次
例子:
sort -n -t: -k3 /etc/passwd
df | tr -s " " "%"|cut -d% -f5|sort -nr |head -1
seq 94 |sort -R |head -1 或者echo {1..94} |tr " " "\n"|sort -R |head -1
注:uniq也是一个带标准输入的命令
uniq命令:从输入中删除前后相接的重复的行
uniq [OPTION]... [FILE]...
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行
注:连续且完全相同方为重复
常和sort 命令一起配合使用:
sort userlist.txt | uniq -c
15:05[root@centos7 /data]# sort access_log |cut -d"-" -f1| uniq -c| sort -nr |head
4870 172.20.116.228
3429 172.20.116.208
2834 172.20.0.222
2613 172.20.112.14
2267 172.20.0.227
2262 172.20.116.179
2259 172.20.65.65
1565 172.20.0.76
1482 172.20.0.200
1110 172.20.28.145
问:给你两个文本文件f1,f2,分析两个文本文件中相同的行和不同的行.
答:sort f1 |uniq >f1b
sort f2 |uniq >f2b
cat f1b f2b |sort |uniq -u :不同的行
cat f1b f2b |sort |uniq -d :相同的行
patch 复制在其它文件中进行的改变(要谨慎使用)
适用 -b 选项来自动备份改变了的文件
diff -u foo.conf foo2.conf > foo.patch :对于foo做哪些改变能成为foo2保存到foo.patch中
patch -b foo.conf foo.patch
grep, egrep, fgrep(不支持正则表达式搜索)
grep: Global search REgular expression and Print out the line
作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件
--color=auto: 对匹配到的文本着色显示
-m # 匹配#次(行)后停止:因为每次读入一行
-v 显示不被pattern匹配到的行
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配到的行数:显示匹配到pattern的行的总数
-o 仅显示匹配到的字符串:因为并不是固定的,所以还是很有意义的
-q 静默模式,不输出任何信息 :echo $? 找到显示为0 找不到显示为1,返回值不同
-A # after, 显示找到的行外加后#行
-B # before, 显示找到的行外加前#行
-C # context, 显示找到的行外加前后各#行
-e 实现多个选项间的逻辑or关系
grep –e ‘cat ’ -e ‘dog’ file
并且and的话可以多次过滤即可
-w 匹配整个单词:pattern前后不能带字母,数字或者下划线(它认为数字和下划线也是单词)
-E 使用ERE:扩展的正则表达式
-F 相当于fgrep,不支持正则表达式
-f file 根据模式文件处理:根据文件里面写的pattern来过滤,每一行都是一个pattern,每一行的parteen是或的关系
REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能
程序支持:grep,sed,awk,vim, less,nginx,varnish等
分两类:
基本正则表达式:BRE
扩展正则表达式:ERE grep -E, egrep
正则表达式引擎:
采用不同算法,检查处理正则表达式的软件模块
PCRE(Perl Compatible Regular Expressions)
元字符分类:字符匹配、匹配次数、位置锚定、分组
man 7 regex
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符,示例:[wang] [0-9] [a-z] [a-zA-Z]
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母 [:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
[:digit:] 十进制数字 [:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
匹配前面的字符任意次,包括0次
贪婪模式:尽可能长的匹配
.* 任意长度的任意字符
\? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少1次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
^ 行首锚定,用于partten的最左侧
$ 行尾锚定,用于partern的最右侧
^PATTERN$ ,用于partern匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 词首锚定,用于单词模式的左侧
\> 或 \b 词尾锚定,用于单词模式的右侧
\<PATTERN\> 匹配整个单词
例子:
去除centos版本号:
09:32[root@centos7 ~]# cat /etc/system-release | grep -Eo "([0-9]+\.){2}[0-9]+"
7.6.1810
09:35[root@centos7 ~]# cat /etc/centos-release |grep -oE "[0-9]+"
7
6
1810
20:31[root@centos7 ~]# cat /etc/centos-release |grep -oE [0-9]+| head -1
7
20:31[root@centos7 ~]# cat /etc/centos-release |grep -oE " [0-9]+" |tr -d " "
7
20:32[root@centos7 ~]# cat /etc/centos-release |grep -oE "[0-9]+" |grep -m 1 ".*"
7
20:24[root@centos7 ~]# echo abcd |grep -Eo "."
a
b
c
d
分组:\(\) 将一个或多个字符捆绑在一起,当作一个整体处理,如:\(root\)\+
分组括号中的partern匹配到的内容会被正则表达式引擎记录于内部的变量中,这些
变量的命名方式为: \1, \2, \3, ...
\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
示例: \(string1\+\(string2\)\)
\1 :string1\+\(string2\)
\2 :string2
后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身
举例:
20:15[root@centos7 /data]# echo root radt root rawd |grep "\(r..t\).*\1"
root radt root rawd
20:23[root@centos7 /data]# echo roXt radt root radtwd |grep "\(r..t\).*\1"
roXt radt root radtwd
或者or:\|
示例:a\|b: a或b C\|cat: C或cat \(C\|c\)at:Cat或cat
grep "abc\{3\}" :这是c出现了3次相当于 abccc
grep "\(abc\)\{3\}" :abc出现了三次 相当于abcabcabc (分组的第一种应用)
grep "^\(r\|b\)" :以r或者b开头的,注意要把它括起来作为一个整体
同理: grep "abc\|d":表示abc或者d
grep "ab\(c\|d\)":表示abc或者abd
20:00[root@centos7 /data]# df| grep "/dev/sd"|grep "[0-9]\{1,3\}%" -o |grep "[0-9]" -o
4
1
1
8
20:15[root@centos7 /data]# df| grep "/dev/sd"|grep "[0-9]\{1,3\}%" -o |grep "[0-9]\+" -o
4
1
18
egrep = grep -E
egrep [OPTIONS] PATTERN [FILE...]
扩展正则表达式的元字符:
. 任意单个字符
[] 指定范围的字符
[^] 不在指定范围的字符
^ 行首
$ 行尾
\<, \b 语首
\>, \b 语尾
()
后向引用:\1, \2, ...
a|b a或b
C|cat C或cat
(C|c)at Cat或cat
例子:取IP
ifconfig |grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}"
ifconfig eth0 |grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" |head 1
20:23[root@centos7 /data]# ifconfig |grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}"
inet 192.168.36.102 netmask 255.255.255.0 broadcast 192.168.36.255 inet 127.0.0.1 netmask 255.0.0.0
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
20:34[root@centos7 /data]# ifconfig ens33 |grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}"
192.168.36.102
255.255.255.0
192.168.36.255
找出passwd用户名和shell相同的:
egrep "^(.*):.*\<\1$" /etc/passwd
vi 老版本的文本编辑器
gedit 一个简单的图形编辑器
gvim 一个Vim编辑器的图形版本
+# 打开文件后,让光标处于第#行的行首,+默认行尾
+/PATTERN 让光标处于第一个被PATTERN匹配到的行的行
–b file 二进制方式打开文件
–d file1 file2… 比较多个文件
-m file 只读打开文件
vim -e file 或 ex file 直接进入ex模式
如果该文件存在,文件被打开并显示内容
如果该文件不存在,当编辑后第一次存盘时创建它
命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本
插入(Insert)或编辑模式:修改文本
扩展命令(extended command )模式:保存,退出等
Esc键 退出当前模式
Esc键 Esc键 总是返回到命令模式
i insert, 在光标所在处输入
I 在当前光标所在行的行首输入
a append, 在光标所在处后面输入
A 在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
ESC
:
ESC,enter
:q 退出
:q! 强制退出,丢弃做出的修改
:wq 保存退出
:x 保存退出
ZZ 保存退出
ZQ 不保存退出
h: 左 l: 右 j: 下 k: 上
#COMMAND:跳转由#指定的个数的字符
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数
^ 跳转至行首的第一个非空白字符
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 删除前面一个单词
#COMMAND :先输入数字,然后跟上上面的命令,多个单词,多行等删除
dG 删除到最后 dgg 删除到最前 d#G 删除到第几行 :注意都是按照光标处开始的
同理 :d#l(#dl) d#h(#dh) dj:删除当前行和下一行 dk:删除当前行和上一行 类似于d+方向键
同理还有: dH dM dL ,d( d) d{ d} 等,也可以前面加数字做更多修改
注意没有dzz dzt dzb
#dd 多行删除
y 复制,行为相似于d命令
y$
y0
y^
ye
yw
yb
#COMMAND
yy:复制行
#yy 复制多行
Y:复制整行
小写p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘
贴至当前光标所在处的后面
大写P 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘
贴至当前光标所在处的前面
c: 修改后切换成插入模式 :命令模式 --> 插入模式 (就相当于先d然后直接进入命令模式,更多用法和d相同)
c$
c^
c0
cb
ce
cw
#COMMAND
#cc :删除多行并切换插入模式编辑
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
u 撤销最近的更改
#u 撤销之前多次更改
U 撤消光标落在这行后所有此行的更改
Ctrl - r 重做最后的“撤消”更改
. 重复前一个操作
#. 重复前一个操作#次
按“:”进入Ex模式
创建一个命令提示符: 处于底部的屏幕左侧
常见命令
w 写(存)磁盘文件
wq 写入并退出
x 写入并退出
q 退出
q! 不存盘退出,即使更改都将丢失
r filename 读文件内容到当前文件中:可以多次读入,都放在一起
w filename 将当前文件内容写入另一个文件
!command 执行命令 :执行命令的时候会退出VIM在外面执行命令,然后再按一次回车回到VIM
r!command 读入命令的输出
d y
w file: 将范围内的行另存至指定文件中
r file:在指定位置插入指定文件中的所有内容
格式:s/要查找的内容/替换为的内容/修饰符(/可以换位@或者#等等)
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&” 引用前面查找时查找到的整个内容
修饰符:
i 忽略大小写
g 全局替换(如果不输入g,则在默认情况下,每一行只替换第一次出现的匹配的字符)
gc 全局替换,每次替换前询问
vim –b binaryfile
扩展命令模式下,利用xxd命令转换为可读的十六进制:%!xxd
插入模式下,编辑二进制文件
扩展命令模式下,利用xxd命令转换回二进制:%!xxd -r
保存退出
v 面向字符
V 面向行
ctrl-v 面向块
w ) } >等
vim -o|-O FILE1 FILE2 ...
-o: 水平分割
-O: 垂直分割
Ctrl+w,s:split, 水平分割
Ctrl+w,v:vertical, 垂直分割
ctrl+w,q:取消当前窗口
ctrl+w,o:取消全部只留下当前窗口
:wqall 退出 qall! 强制退出不保留
标签:用户登陆 排序 exp 编辑器 conf 没有 format command 计数
原文地址:https://blog.51cto.com/14228129/2363971