linux基础

Linux文件管理基础命令(下)-day08

2020-03-08  本文已影响0人  Linux运维

查找、排序、去重、截取字段、统计

一、查找

which 查看绝对路径

[root@10 ~]# which cd
/usr/bin/cd

whereis
选项:-b 二进制文件,只查看绝对路径

[root@10 ~]# whereis cd
cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz
[root@10 ~]# whereis -b cd    # -b 二进制文件,不查看帮助,只查看绝对路径
cd: /usr/bin/cd

type

[root@10 ~]# type -a ls       #查看命令的绝对路径(包括别名)
ls 是 `ls --color=auto' 的别名
ls 是 /usr/bin/ls
二、排序

sort
选项:-t 指定分隔符,-k 指定第几列,-n 按数字排列,-r 倒序

[root@10 ~]# cat file.txt 
b:3
c:2
a:4
e:5
d:1
f:11
[root@10 ~]# sort -t ":" -k2 -n file.txt     # -t ":" 代表以冒号为分隔符,-k2 代表第二列 
d:1
c:2
b:3
a:4
e:5
f:11
[root@10 ~]# sort -t ":" -k2 -nr file.txt     # -r 是倒序
f:11
e:5
a:4
b:3
c:2
d:1

举例-k3.1,3.3 指的是第三列的第一个字符,到第三列的第三个字符

三、去重

uniq (必须相邻,才能去重)
选项:-c 统计重复的次数

[root@10 ~]# sort file1.txt | uniq -c

管道 | :将左边命令的输出结果,交给管道右边命令的输入

去重步骤:
①先排序
②再去重
③最后统计

四、截取字段

cut
选项:-d 指定分隔符,-f 取第几列(-f 2,5 代表取第2列和第5列),-c 按字符取(空格也算)

[root@10 ~]#echo "Im zero, is QQ 214596302" > oldboy.txt
[root@10 ~]# cat oldboy.txt       #查看文件内容
Im zero, is QQ 214596302
[root@10 ~]# cut -d " " -f 2,5 oldboy.txt      # -d " "  指定空格为分隔符,-f 2,5  取出第2列和第5列
zero, 214596302
[root@10 ~]# cut -d " " -f 2,5 oldboy.txt | sed 's#,# #g'    #想要去掉逗号,这里用到了管道以及sed命令
zero  214596302

sed

[root@10 ~]# cut -d " " -f 2,5 oldboy.txt | sed 's#,# #g'    # 's#,# #g'  指的是空格代替逗号
zero  214596302

awk(重要)
选项:-F 指定分隔符
第一种方式:

[root@10 ~]# awk -F " " '{print $2,$5}' oldboy.txt
zero, 214596302
[root@10 ~]# awk -F " " '{print $2,$5}' oldboy.txt | sed 's#,# #g'    # '{print $2,$5}'  指的是取出第2列和第3列
  zero  214596302

第二种方式:

[root@10 ~]# awk -F "," '{print $1,$2}' oldboy.txt
Im zero  is QQ 214596302
[root@10 ~]# awk -F "," '{print $1,$2}' oldboy.txt | awk '{print $2,$5}'    #用了两次awk命令
zero  214596302

第三种方式:

[root@10 ~]# awk -F "[ ,]" '{print $2,$6}' oldboy.txt    # [ ,]  指的是空格和逗号都算分隔符
zero  214596302

高级用法
[ ,]+ +表示重复,前面的字符一次或多次
空格算一个分隔符
逗号算一个分隔符
空格和逗号挨在一起,也算一个分隔符
空格逗号空格,全算一个分隔符

[root@10 ~]# awk -F "[ ,]+" '{print $2,$5}' oldboy.txt
zero  214596302
五、统计行号

wc
选项:-l 表示文件行数,-c 显示文件字节 ,-w 显示文件单词

[root@10 ~]# wc -l /etc/passwd
21 /etc/passwd    #有21行
六、习题思路

1.习题: 分析如下日志,统计每个域名被访问的次数。
思路如下:
①想办法提取域名
②排序,将相同的罗列在一起
③去重,统计

2.习题1: 使用awk取出系统的IP地址。
思路如下:
①我要取得IP值在哪里 ifconfig
②如何精确到在哪一行
③如何精确到在哪一列

上一篇 下一篇

猜你喜欢

热点阅读