7.linix基础命令------sort uniq cut sed awk wc

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

2)对字符的处理
sort
uniq
cut
sed
awk
wc

命令:sort

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

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

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

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

例题
cat >> file2.txt <<EOF
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过滤的用法

在这里插入图片描述
在这里插入图片描述

命令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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值