[ linux ] 之 高级命令
Posted 删库跑路小分队
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ linux ] 之 高级命令相关的知识,希望对你有一定的参考价值。
今日 - 谷雨
2020..04.19
大熊提示
00
Hello,删库跑路小伙伴们。又到了分享面试题的时候,之前有个小伙伴面试被问到了linux命令,并表示即使绞尽脑汁,想掉好几根头发也表示懵懵哒,在此跟大家分享下关于linux命令。
先预祝大家能找到工作
并且都是漂亮小姐姐的公司,hhh
linux命令前言
01
提到linux命令,大家的第一反应可能就是删库跑路之:rm -rf /*
当然也有可能是比较基础的如:cd,mv,cp,scp这些
但是这些都是一些非常基础的命令,并且在面试和工作中也都是价值不大的问题,在此,我们将配合面试题来讲解linux高级命令。
Question
02
一个文件content.txt中有三行两列数据,分别是a 10 b 20 c 30,字母和数字中间用的是空格分隔,请使用awk命令数据第二列的和,也就是10+20+30的结果。
这道题的解决思路,对于萌懂来说,最多可能想到的就是for循环遍历求和。
是的,这的确是一种思路,但是我们一般不用,为什么?麻烦,程序员的思想应该是懒,能少写代码就不多写代码,能少些绝不多写。
对此,我们将会提到linux的高级命令。
Answer
02
awk -F ' ' '{sum+=$2}'
awk,按照 进行拆分,只要第二列就是$2,再sum求和即可
在此,我们将对linux命令三剑客进行讲解
grep + sed + awk
● grep更适合单纯的查找或匹配文本,
●sed更适合编辑匹配到的文本,
●awk更适合格式化文本,对文本进行较复杂格式处理,同时功能最强大,也最复杂。
grep
一般对grep的操作仅用于查找文件里符合条件的字符串。从第一行开始查找,并不断的进行重复,直到文件所有
# 查找hello
cat a.txt | grep "hello"
# 如果在找到的过程中,还想知道是在第几行,则添加参数-n
cat a.txt | grep -n "hello"
# 如果想查找到不匹配的行,而不是匹配的,就添加参数-v
cat a.txt | grep -vn "hello"
# 如果相对查询结果进行一次汇总的话,添加参数-c
cat a.txt | grep -c "hello"
# 如果想同时查找多个字符串,添加参数 -l
cat a.txt | grep -l "hello" "world"
# 如果想忽略大小写,就添加参数 -i
cat a.txt | grep -i "Hello"
# 如果想要精确查询,仅限于hello,就添加参数 -x
cat a.txt | grep -x "hello"
awk
是处理文本文件的语言,分析文本用的
处理过程:依次对每一行进行处理,然后输出
要获取第几个 '{print $4}' 切记标点符号
# 单独的输出第一列数据
cat data|awk '{print $1}'
# 单独输出最后一列数据
cat data|awk '{print $NF}'
# 单独输出第3列和第5列数据
cat data|awk '{print $3,$5}'
# 求和
cat data|awk '{sum+=$1} END {print "Sum = ", sum}'
# 求平均数
cat data|awk '{sum+=$1} END {print "Average = ", sum/NR}'
# 求最大值
cat data|awk 'BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print "Max=", max}'
# 求最小值 (这个初始值,最好是非常大,大所有的数据)
cat date|awk 'BEGIN {min = 1999999} {if ($1<min) min=$1 fi} END {print "Min=", min}'
sed
对文件进行处理和编辑,一般主修改
# 在testfile文件的第四行添加一行
sed -e 4a est testfile
sed '4a test'
# 在testfile文件中删除2-5行
sed '2,5d'
# 只删除第2行
sed '2d'
# 删除第3行到最后
sed '3,$d'
# 对数据进行全部的搜寻和替换
# 保险起见。先查看数据
sed 's/要替换的字串/新的字串/g'
# 真实有效的修改数据!!!(危险)
sed -i ' s / 要替换的字段 / 新的字段 / g ' 要修改的文件
总结
03
在大家刚刚接触awk,sed,grep确实会有一丝丝不习惯,但是人生苦短,我用linux。
awk,sed,grep能被称为linux三剑客,那么就必然有独特支持,有顶半边天的能力,小伙们最好还是能够多掌握多熟悉多了解哈。
扫码关注我
个人博客 : www.guodaxiong.com
如果不曾见过阳光,我本可以忍受黑暗
Hi GuoDaXiong
以上是关于[ linux ] 之 高级命令的主要内容,如果未能解决你的问题,请参考以下文章