[ linux ] 之 高级命令

Posted 删库跑路小分队

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ linux ] 之 高级命令相关的知识,希望对你有一定的参考价值。



今日 - 谷雨




2020..04.19


大熊提示

00






Hello,删库跑路小伙伴们。又到了分享面试题的时候,之前有个小伙伴面试被问到了linux命令,并表示即使绞尽脑汁,想掉好几根头发也表示懵懵哒,在此跟大家分享下关于linux命令。






先预祝大家能找到工作

并且都是漂亮小姐姐的公司,hhh



linux命令前言

01


提到linux命令,大家的第一反应可能就是删库跑路之:rm -rf /* 

当然也有可能是比较基础的如:cdmvcpscp这些

但是这些都是一些非常基础的命令,并且在面试和工作中也都是价值不大的问题,在此,我们将配合面试题来讲解linux高级命令。



Question

02




一个文件content.txt中有三行两列数据,分别是a 10 b 20 c 30,字母和数字中间用的是空格分隔,请使用awk命令数据第二列的和,也就是10+20+30的结果。


[ linux ] 之 高级命令




这道题的解决思路,对于萌懂来说,最多可能想到的就是for循环遍历求和。


是的,这的确是一种思路,但是我们一般不用,为什么?麻烦,程序员的思想应该是懒,能少写代码就不多写代码,能少些绝不多写。


对此,我们将会提到linux的高级命令。




Answer

02




awk -F ' ' '{sum+=$2}' 


awk,按照 进行拆分,只要第二列就是$2,再sum求和即可



[ linux ] 之 高级命令






在此,我们将对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"


[ linux ] 之 高级命令



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}'


[ linux ] 之 高级命令



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三剑客,那么就必然有独特支持,有顶半边天的能力,小伙们最好还是能够多掌握多熟悉多了解哈。


[ linux ] 之 高级命令


扫码关注我

个人博客 : www.guodaxiong.com


如果不曾见过阳光,我本可以忍受黑暗

 Hi GuoDaXiong 






以上是关于[ linux ] 之 高级命令的主要内容,如果未能解决你的问题,请参考以下文章

[ linux ] 之 高级命令

linux之文件的高级命令

Linux之find命令的高级用法

linux命令之高级使用 du

linux命令之高级使用 find

每天一个linux命令8之grep高级篇