Linux中的数据提取操作

在这里插入图片描述

一 .cut

在这里插入图片描述
这里以/etc/passwd文件里的内容来演示
将用户名切割打印出来:

cat /etc/passwd | cut -d : -f 1
这里按:分割
在这里插入图片描述

二.grep

在这里插入图片描述

cat a | grep -n for
将a文件里有for的行号打印出来这里是引用
last | grep -v byl
将不包含byl的检索出来

在这里插入图片描述

三.sort

在这里插入图片描述

cat /etc/passwd | sort -t : -k 3 -n

这里按:分割,且取第三个段,按纯数字由小到大排列

在这里插入图片描述

last | grep -v “wtmp” | grep -v “^$” | cut -d " " -f 1 | uniq -c | sort -n

这个是检索除了wtmp除了^$(空格)的登录信息
然后将检索的信息按空格切割取第一部分,然后去重并显示出重复的次数
最后在按纯数字排序

在这里插入图片描述

last | grep -v “wtmp” | grep -v “^$” | cut -d " " -f 1 | uniq -c | sort -n | awk ‘{printf("%s %d\n",$2,$1)}’

在加上这awk命令就可以把字符串和数字顺序进行调整,里面就像c语言的函数一样
在这里插入图片描述

四.tee

在这里插入图片描述

cat a | tee b

在屏幕显示信息的同时将文件里的内容复制到另一个文件中
在这里插入图片描述

五.split

在这里插入图片描述

split -l 10 a

将文件里的内容按行分为10份
在这里插入图片描述

ls /etc/ | split -l 10

将目录下的文件按行分为10份,这里就只是将/etc/下的文件按照字符串传给管道,再按字符串传出来
在这里插入图片描述

六.xargs

在这里插入图片描述
在这里插入图片描述
这里就相当于将管道里的文件传给xargs,这样file作用的对象是所有文件就不是管道了
在这里插入图片描述

七.tr

在这里插入图片描述
下面这两行命令是完全等价的
在这里插入图片描述
这个是将标准输入的内容替换,并输出,并不会改变文件里的内容

cat a | tr -s -c ‘a-zA-Z’ ‘\n’ | sort | uniq -c | sort -n -r

在这里插入图片描述

find . -name “*.c” | xargs cat | tr -s -c ‘a-zA-Z’ ‘\n’ | sort | uniq -c | sort -n -r | head -10

读取文件中排名前十的高频词汇

在这里插入图片描述

linux三剑客之二awk命令

在这里插入图片描述
上面的第一步严格来说是执行awk后面的赋值语句,然后才是后面三步

BREGIN语句再读取文件内容时就已经执行,所以如果不需要读取文件而打印时可以只要该语句

按分割符分割的块变量指令$n只能在单引号内使用

eval `cat /etc/passwd |awk -F : -v sum=${sum} -v cnt=${cnt} 
'{ if($3 < 100) {++cnt ; sum+=$3;}} 
END {printf("sum=%d\navg=%d\n", sum,sum/cnt)}'`

这里的eval可以让输出的等式文本用作shell命令赋值语句
这样就可以实现将awk里变量的值传到外部

“sum=${sum} "
-v cnt={cnt}” 是将shell里的变量传到awk里面

在这里插入图片描述

sed--------文本流编辑

文本流编辑替换
文件替换

数据提取练习题

在这里插入图片描述

1.有两种方法

在这里插入图片描述

在这里插入图片描述

2.有两种方法

echo ${PATH} | tr “:” “\n” | tail -1
先将路径打印出来给管道,再将管道里的内容的:替换为\n换行符,换行的内容给管道,tai就可以从管道里打印出最后一行内容

echo ${PATH} | rev | cut -d : -f 1 | rev
先将路径打印出来给管道,再将管道里的内容反过来再传入管道,然后再用cut将管道里的内容按:切取第一段,给管道,然后再将管道里的内容反过来

在这里插入图片描述
3.

cat /etc/passwd | cut -d : -f 1 | sort
这个是只有用户信息输出
在这里插入图片描述

cat /etc/passwd | sort -t : -k 1
这个还是会将全部信息输出
在这里插入图片描述

cat /etc/passwd | head -n 20 | tail -n 10

在这里插入图片描述

cat /etc/passwd | head -n 20 | tail -n 10 | cut -d : -f 1 | xargs -n 1 id

在这里插入图片描述
10

cat /etc/passwd | cut -d : -f 1 | xargs -n 1 -esync
在这里插入图片描述

cat a.txt | tr -s " " “\n” | sort | uniq -c | sort -n -r 这里是引用
cat >> a.txt << xxx
这个的意思是从终端输入进去的被重定向附加到文件a.txt直到输入xxx时停止

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值