1:linux必须掌握的核心实用命令
linux搜索神器find命令高级用法
简介:详细讲解find命令的使用 linux的最底层级别是 / 目录
基本用法:find 路径 选项
代码语言:javascript复制 -type #根据文件类型
find /var/log -type f -name "*.log" ; find /var/log -type d (f代表文件,d代表目录)
这样查找出来的是log目录下面所有log后缀结尾的文件 d查找的出来的都是路径加目录的名字例如/var/log/ppp
-name #根据文件名 find /var/log -type f -name "*.log"
-perm #根据文件权限 find /var/log -perm 600 -type f -name "*.log"
-user #根据文件所属主 find /var/log -user XD
高级用法
代码语言:javascript复制find /var/log -type f -name "*.log" -exec wc -l {} ;
比如上面的find /var/log -type f -name "*.log"
列出了所有以log结尾的文件,如果想要进一步处理啊的话可以使用上面的目录,会对上一条命令找出的文件进行统计行数。
那么有的小白可能会问,目录跟文件什么区别呢?在前面的几章说过,查看属性后-开头的为文件,d开头为目录,如果你用vi去编辑一个目录(d),那么毫无疑问会报错,vi 可编辑的是文件,即以-开头的文件属性。
; #可以执行多条命令
#转义符,转义;使得这条命令结束
{} #把find命令匹配到的每一次结果传递给{}
-exec #执行
eg:
find /var/log -type f -name "*.log" -exec cp -a {} /home/test ;
-a是连带属性一起复制。
上面的cp命令是把log下面列出来的所有.log文件全部复制到 /home/test目录下
-mtime
#根据文件的变更时间来查找;-n表示更改时间距离现在n天以内; n表示更改时间距离现在n天以前
eg:
find /var/log -mtime -2 -name "*.log" -exec ls -lrt {} ; 查找两天之内被修改过的文件。
find /var/log -mtime 2 -name "*.log" -exec ls -lrt {} ; 查找出两天以前的被修改过的文件
处理海量数据之cut命令
简介:介绍cut命令的基本使用
cut应用场景:通常对数据进行列的提取 (在工作中,我们通常会对数据库或者查出来的日志进行列的提取)
语法:cut [选项]…[file] 如下所示:列是一竖列
代码语言:javascript复制选项:
-d #指定分割符
-f #指定截取区域
-c #以字符为单位进行分割
注意:不加-d选项,默认为制表符,不是空格,因为cut命令的缺点就是你不能指定" "这样子代表为以空格为分隔符。不加-d即可
eg:
以':'为分隔符,截取出/etc/passwd的第一列跟第三列
cut -d ':' -f 1,3 /etc/passwd
eg:
以':'为分隔符,截取出/etc/passwd的第一列到第三列
cut -d ':' -f 1-3 /etc/passwd -是一列到第三列
eg:
以':'为分隔符,截取出/etc/passwd的第二列到最后一列
cut -d ':' -f 2- /etc/passwd
eg:
截取/etc/passwd文件从第二个字符到第九个字符 就是比如root:0000000,截取的就是00t:00000
cut -c 2-9 /etc/passwd
eg:
比如领导想叫你截取linux上面所有可登陆普通用户(就是/bin/bashd)
cat /etc/passwd | grep '/bin/bash' | cut -d ':' -f 1 | grep -v root
#前文讲过指明nologin的是不可登录的,指明是/bin/bash是可以登录的
处理海量数据之awk命令
简介:介绍awk命令的基本使用
awk的简介:一个非常强大的数据处理命令,支持条件判断,数组,循环等功能,与grep,sed被称为linux三剑客
awk的应用场景:通常对数据进行列的提取
语法:
代码语言:javascript复制awk '条件1 {执行动作} 条件2 {执行动作} ...' 文件名
或awk [选项] '条件1 {执行动作} 条件2 {执行动作} ...' 文件名
或awk [选项] ‘条件1 {执行动作} 条件2 {执行动作} …’ 文件名
特殊要点与举例说明:
代码语言:javascript复制printf #格式化输出,不会自动换行。
print #打印出内容,默认会自动换行
%s #代表字符串
t #制表符 例如要打印出123456 1(制表符)2(.....) 中间的空格就是制表符
n #换行符
代码语言:javascript复制eg:printf '%st%st%st%st%st%sn' 1 2 3 4 5 6
输出 1 2 3 4 5 6
awk的一些特殊要点与举例说明
代码语言:javascript复制df命令
###### 功能说明:文件系统的磁盘使用情况统计。
###### 举 例:df -h(这个参数以G跟M,对磁盘文件进行统计)
du命令:功能说明:统计大小
##### 举 例:du -sh (不讲其他东西的话是统计这个路径下文件的所有总和(M)); du -sm *#统计各个文件的小
NR #行号 awk命令是不会像cut命令一样去识别类似于:这种分割符的
$1 #代表第一列
$2 #代表第二列
$NF#代表最后一列
实战使用awk命令:
代码语言:javascript复制df -h | awk '{print $1}' 打印出第一列的全部
df -h | awk 'NR==4 {print $1}' 会打印出第四行的,第一列的那个
df -h | awk '(NR>=2 && NR <=5) {print $1}' 打印出第一列的,行数在2到5之间的
df -h | awk '{print $NF}'
-F #指定分割符 跟下面的FS命令相似
代码语言:javascript复制awk -F":" '{print $1}' /etc/passwd
BEGIN #在读取所有行内容前就开始执行,一般用来初始化操作
代码语言:javascript复制eg:
cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}'
df -h |grep -v 'Filesystem' | awk '{printf $1} {printf "文件系统使用率:"} {print $5}'
df -h |grep -v 'Filesystem' | awk 'BEGIN {printf "文件系统使用情况:n n"} {printf $1}
{printf "文 件系统使用率:"} {print $5}'
BEGIN是对每一行数据进来awk之前进行自定义初始化,上面是先初始化打印出上面的文字
END #结束的时候 执行(与BEGIN相反) grep -v:反向(筛选)选择 (我们不想看到包含repair的行,执行如下的命令:grep -v repair)
代码语言:javascript复制df -h |grep -v 'Filesystem' | awk 'BEGIN {printf "文件系统使用情况:n n"} {printf $1}
{printf "文件系统使用率:"} {print $5} END {printf "一切正常 n"}'
处理海量数据之sed命令
简介:介绍sed命令的基本使用
sed的应用场景:主要对数据进行处理(选取,新增,替换,删除,搜索)
sed语法:sed [选项] [动作] 文件名
常见的选项与参数:
-n #把匹配到的行输出打印到屏幕
p #以行为单位进行打印,通常与-n一起使用
代码语言:javascript复制df -h | sed -n '2p'
d #删除
代码语言:javascript复制df -h | sed '2d' 删除上面的第二行,删除的只是输出的数据,原本系统的数据是不会删除的。
a #在行的下面插入新的内容
代码语言:javascript复制df -h | sed '2a 1234567890' 第二行下面
i #在行的上面插入新的内容
代码语言:javascript复制df -h | sed '2i 1234567890' 第二行上面
c #替换
代码语言:javascript复制df -h | sed '2c 1234567890'
指定字符串替换:s/要被取代的内容/新的字符串/g #指定内容进行替换 (使用率较高)
代码语言:javascript复制df -h | sed 's/centos-root/Centos7/g' 管道符| 意思是通过管道符传给sed命令,s/加上要匹配的内容再加上/写上你要更该的内容/g结尾,意思是结束命令。
上面的操作只是对输出的命令进行修改。
-i #对源文件进行修改 (高危操作,慎用,用之前需要备份源文件) 下面的例子是,把上面的df -h输出的命令写到了df.txt中进行演示,把原来的Centos7更该成了Centos8,而不是跟上面的命令一样,只是修改了输出的命令。
代码语言:javascript复制sed -i 's/Centos7/Centos8/g' df.txt
搜索:在文件中搜索内容(要精准匹配建议使用grep命令)
代码语言:javascript复制sed -n '/tmpfs/p' df.txt 要搜索的/ /括号起来后面加个P
上面的不会精确的匹配,而使用grep命令可以精确的匹配
-e #表示可以执行多条动作 结果是不会输出到屏幕的 加上-I修改掉原文件查看
代码语言:javascript复制sed -e 's/Centos8/Centos7/g' -e 's/tmpfs/TMP/g' df.txt >123.txt
改掉centos8 跟改掉tmpfs
本章的内容到此结束,希望能为您提供帮助。