文件查看命令
cat //查看文件内容
示例:cat /etc/passwd
示例:cat -n /etc/passwd //-n参数行号
示例:cat >> xuliangwei.txt <<EOF //追加数据
test
EOF
head //查看文件头部内容,默认前十行
示例:head /etc/passwd
示例:head -n5 /etc/passwd //-n参数指定查看头几行
tail //查看文件尾部内容,默认最后十行
示例:tail /etc/passwd
示例:tail -f /var/log/messages // -f参数跟随尾部输出而变化
more //按空格可翻页查看文件内容,按q可推出
示例:more /etc/passwd
less //和more类似
示例:less /etc/passwd
文件下载命令
wget //文件下载
-O //指定下载地址,更改名称
-T //超时时间
-q //安静下载(关闭wget输出)
--spider //网络爬虫
示例:wget http://www.baidu.com
curl //文件下载
示例:curl -o http://www.baidu.com
yum install lrzsz
rz //文件上传
sz //文件下载
示例:sz filename
命令查找命令
locate //查找文件或者目录
示例:locate /etc/sh //搜索etc目录下所有以sh开头的文件
示例:locate -i /etc/sh //搜索etc目录下,所有以sh开头的文件,忽略大小写
which //查找系统PATH变量目录下的命令(绝对路径)
示例:which ls
whereis //查找文件索引数据库下的命令、源文件、man文件。非PATH变量查找,所以查找的面比which要广 -b,-m
示例:whereis ls
示例:whereis -b ls
字符处理命令
1.使用sort排序
很多情况下需要对无序的数据进行排序, 这时就需要用到sort排序了。
sort [OPTION]... [FILE]...
-r:倒序
-n:按数字排序
-t:指定分隔符(默认空格)
-k:指定第几列, 指定几列几字符(指定1,1 3.1,3.3)
//演示soft的用法, 首先创建一个文件:
[root@xuliangwei ~]# cat >> sort.txt <<EOF
b:3
c:2
a:4
e:5
d:1
f:11
EOF
//下面对输出的内容进行排序:
[root@xuliangwei ~]# sort sort.txt
a:4
b:3
c:2
d:1
e:5
f:11
//可观察到, sort文件具有一个特点, 第一个字符是字母, 第三个字符是数字, 中间是用冒号隔开。
//这样我们可以使用-t指定分隔符, 使用-k指定用于排序的列了。
[root@xuliangwei ~]# sort -t ":" -k2 sort.txt
d:1
f:11 //第二行为什么是11?不应该按照顺序排列?
c:2
b:3
a:4
e:5
//按照排序的方式, 只会看到第一个字符,11的第一个字符是1, 按照字符来排序确实比2小。
//如果想要按照数字的方式进行排序, 需要使用 -n参数。
[root@xuliangwei ~]# sort -t ":" -n -k2 p.txt
d:1
c:2
b:3
a:4
e:5
f:11
//测试案例,对下面内容进行排序
192.168.3.1 00:0F:AF:81:19:1F
192.168.3.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.1.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.1.12 00:30:15:A2:3A:A1
192.168.1.1 00:0F:AF:81:19:1F
192.168.2.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.1.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.1.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.3.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.3.12 00:30:15:A2:3A:A1
//针对第三列的第一个字符,第四列的第一个字符到第三个字符排序才是正确
[root@student tmp]# sort -t. -k3.1,3.1nr -k4.1,4.3nr test.txt
2.使用uniq删除重复内容
如果文件中有多行完全相同的内容, 当前是希望能删除重复的行,同时还可以统计出完全相同的行出现的总次数, 那么就可以使用uniq命令解决这个问题(但是必须配合sort使用)。
uniq [OPTION]... [INPUT [OUTPUT]]
-c 计算重复的行
//演示uniq的用法, 首先创建一个文件:
[root@xuliangwei ~]# cat uniq.txt
abc
123
abc
123
//uniq需要和sort一起使用, 先使用sort排序, 让重复内容连续在一起
[root@xuliangwei ~]# cat uniq.txt |sort
123
123
abc
abc
//使用uniq去除相邻重复的行
[root@xuliangwei ~]# cat uniq.txt |sort|uniq
123
abc
//使用-c参数, 能统计出文件中每行内容重复的次数
[root@xuliangwei ~]# cat uniq.txt |sort|uniq -c
2 123
2 abc
3.使用cut命令截取某一个字段
cut OPTION... [FILE]...
-d:指定分隔符
-f:数字,取第几列 –f3,6三列和6列
-c:按字符取(空格也算)
//测试数据, 过滤出文件里 xuliangwei以及552408925
#echo “Im xuliangwei, is QQ 552408925” >xuliangwei.com
//实践思路
# sed 's#,# #g' xuliangwei.txt | cut -d " " -f2,6
# sed 's#,# #g' xuliangwei.txt | awk -F " " '{print $2 " " $5}'
# awk -F '[, ]+' '{print $2,$5}' xuliangwei.txt
# awk '{print $2 $5}' xuliangwei.txt | awk -F "," '{print $1" " $2}'
# awk -F "[, ]" '{print $2 " " $6}' xuliangwei.txt
此类问题是运维工作中最常见的问题。可以演变成分析日志,查看TCP各个状态连接数,查看单IP连接数排名等
[root@student tmp]# cat web.log
http://www.xuliangwei.com/index.html
http://www.xuliangwei.com/1.html
http://post.xuliangwei.com/index.html
http://mp3.xuliangwei.com/index.html
http://www.xuliangwei.com/3.html
http://post.xuliangwei.com/2.html
[root@student tmp]# awk -F '/' '{print $3}' web.log|sort -rn|uniq –c
3 www.xuliangwei.comxuliangwei.com
2 post.xuliangwei.comxuliangwei.com
1 mp3.xuliangwei.comxuliangwei.com
[root@student tmp]# cut -d / -f3 web.log|sort -rn|uniq –c
3 www.xuliangwei.comxuliangwei.com
2 post.xuliangwei.comxuliangwei.com
1 mp3.xuliangwei.comxuliangwei.com
4.使用wc统计
wc - print newline, word, and byte counts for each file显示文件的行、单词与字节统计信息
wc [OPTION]... [FILE]...
-l:显示文件行数
-c:显示文件字节
-w:显示文件单词
//统计fstab有多少行
[root@student ~]# wc -l /etc/fstab
15 /etc/fstab
显示/etc/services 文件行号
[root@student ~]# wc -l /etc/services
10774 /etc/services
//扩展方法
[root@student ~]# grep -n "." /etc/services | tail -1
[root@student ~]# awk '{print NR $0}' /etc/services | tail -1
[root@student ~]# cat -n /etc/services | tail -1
[root@student ~]# sed '=' /etc/services | tail -2