1)命令所在的绝对路径在哪?当我们使用,脚本时,碰到环境不同,使用相对路径执行会命令报错,可以使用绝对路径,那我们应该如何快速的获取命令的绝对路径呢? which 显示命令的绝对路径 whereis 显示命令的绝对路径,同时也会显示帮助手册的路径(-b可以只显示路径)

type -a ls #不仅查看命令的绝对路径(包括别名)还可以查看内嵌命令

命令:sort

  1. sort [OPTION]... [FILE]...

将文件进行排序,并将排序结果标准输出
选项:-r:倒序
-n:按数字排序
-t:指定分隔符(默认空格)
-k:指定第几列, (-k1.1,1.1 3.1,3.3#指定第列的第几字符)

对a..f的数据从打到小取前三

  管道符:命令A|命令B,即命令A的正确输出作为命令B的操作对象

例题
cat >> file2.txt <oldxu:20
oldguo:10
oldli:30
oldboy:0
EOF

[root@oldboy ~]# sort -t “:” -k2 -nr file2.txt | head -3
oldli:30
oldxu:20
oldguo:10

命令uniq

  uniq [OPTION]... [INPUT [OUTPUT]]

去重,与sort命令结合使用。
选项:-c 计算重复的行

实现思路: 先排序,然后去重,最后统计例如                                    
  cat >>file3.txt <<EOF

abc
123
abc
123
EOF
[root@oldboy ~]# sort file3.txt | uniq #去重
123
abc———————

如何实现以下要求:
1.产生文件
[root@oldboy ~]# echo “Im oldxu, is QQ 552408925” > oldboy.txt
2.需求:过滤出oldboy.txt文件里 oldxu以及552408925

命令cut

 cut   OPTION... [FILE]...

用来显示行中的指定部分,cut经常用来显示文件的内容

 选项 :-d 指定分隔符 
         -f 数字,取第几列  (例–f3,6三列和6列 )
          -c 按字符取(空格也算)

https://blog.csdn.net/yangshangwei/article/details/52563123

实现方法1:
[root@oldboy ~]# cut -d “ “ -f 2,5 oldboy.txt
oldxu, 552408925
[root@oldboy ~]# cut -d “ “ -f 2,5 oldboy.txt | sed ‘s#,##g’
oldxu 552408925

sed过滤的用法

8. linux命令------sort uniq cut sed awk wc - 图1
8. linux命令------sort uniq cut sed awk wc - 图2

命令awk

今天暂时学习对文本和数据进行取列处理
-F :指定分隔符(默认以空格作为分隔符)

awk '{print $1}'  file
实现方法2:
[root@oldboy  ~]# awk  '{print $2,$5}' oldboy.txt 
oldxu, 552408925
[root@oldboy  ~]# awk  '{print $2,$5}' oldboy.txt | sed 's#,##g' 
oldxu 552408925
实现方法3: awk处理
[root@oldboy  ~]# awk -F "," '{print $1,$2}' oldboy.txt  | awk '{print $2,$5}' 
oldxu 552408925
[root@oldboy  ~]# awk -F "[ ,]" '{print $2,$6}' oldboy.txt 
oldxu 552408925

高级用法
'[ ,]+'    +表示重复    前面的字符一次或多次
空格算一个分隔符
逗号算一个分隔符
空格和逗号挨在一起,也算一个分隔符
空格逗号空格,全算一个分隔符
[root@oldboy  ~]# awk -F "[ ,]+" '{print $2,$5}' oldboy.txt 
oldxu 552408925
命令wc          wc [OPTION]... [FILE]...
用来计算数字
-c或--bytes或——chars:显示文件字节
-l或——lines:只显示行数,统计一个文件有多少行,使用wc -l
-w或——words:只显示字数。
统计一个文件有多少行,使用wc -l

方法1:
[root@oldboy  ~]# wc -l /etc/services 
11176 /etc/services

方法2:
[root@oldboy  ~]# cat -n /etc/services  | tail -1 | awk '{print $1}' 
11176

方法3:
[root@oldboy  ~]# grep -n ".*" /etc/services | tail -1 | awk -F ":" '{print $1}' 
11176