• linux-2-三剑客?四剑客了解一下


    一、grep、sed、awk称为:三剑客

    三剑客听说是入门运维的小伙伴们是必备的技能,但广深小龙不是运维也大致学习了解一下。

    但也有人说是四剑客,包括:find 当然我们也会一起了解下,如下图三剑客的价值犹如同sql的语法的重要性。

    二、擅长过滤:grep

    支持正则表达式,通常作为连接运行下一个命令。

    格式:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

    参数:

    • -a 以文本方式搜索
    • -c 找到符合的行数的文件个数
    • -i 忽略大小写
    • -v 反向选择
    • -h 查询多文件时不显示文件名
    • -l 只输出包含匹配字符的文件名
    • -s 不显示错误信息
    • 等等

    1、过滤配置文件的注释和空行:

    [root@iZbp19lugf22zbsubsf1y6Z ~]# grep -v "#" ~/hrun_django/httprunnermanger_web/HttpRunnerManager/settings.py|grep -v "^$"

    2、使用正则匹配:

    [root@iZbp19lugf22zbsubsf1y6Z gsxl]# grep "[1-9]" t.txt 
    vm.swappiness = 6661111
    [root@iZbp19lugf22zbsubsf1y6Z gsxl]# 

    我还是常用这种:杀掉进程:①ps -ef | grep mysql     ②ps -aux | grep python|xargs kill -9

    [root@iZbp19lugf22zbsubsf1y6Z gsxl]# ps -ef | grep mysql
    root      2580 10112  0 12:53 pts/0    00:00:00 grep --color=auto mysql
    polkitd  13411 13395  0 Apr04 ?        00:06:01 mysqld
    root     23790 23603  0 Mar30 ?        00:00:00 /bin/sh /opt/zbox/run/mysql/mysqld_safe --defaults-file=/opt/zbox/etc/mysql/my.cnf
    65534    24026 23790  0 Mar30 ?        00:00:01 /opt/zbox/run/mysql/mysqld --defaults-file=/opt/zbox/etc/mysql/my.cnf --basedir=/opt/zbox/run/mysql --datadir=/opt/zbox/data/mysql --plugin-dir=/opt/zbox/run/lib/mysql/plugin --user=nobody --log-error=/opt/zbox/logs/mysql_error.log --pid-file=/opt/zbox/tmp/mysql/mysqld.pid --socket=/opt/zbox/tmp/mysql/mysql.sock --port=3306
    [root@iZbp19lugf22zbsubsf1y6Z gsxl]# 

    三、增删查改:sed

    格式:sed [-hnV][-e<script>][-f<script文件>][文本文件]

    参数

    • -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
    • -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
    • -h或--help 显示帮助。
    • -n或--quiet或--silent 仅显示script处理后的结果。
    • -V或--version 显示版本信息。

     动作

    • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
    • d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
    • s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!

    1、替换文件内容:sed "s/替换内容/新内容/g" 文件名

    [root@iZbp19lugf22zbsubsf1y6Z gsxl]# cat t.txt 
    vm.swappiness = 6661111
    asd
    hello
    # 加上 -i 参数既不打印显示
    [root@iZbp19lugf22zbsubsf1y6Z gsxl]# sed "s/asd/gsxl/g" t.txt 
    vm.swappiness = 6661111
    gsxl
    hello

    2、替换指定行内容:sed -i "2cgsxl" t.txt 

    [root@iZbp19lugf22zbsubsf1y6Z gsxl]# cat t.txt 
    vm.swappiness = 6661111
    asd
    hello
    [root@iZbp19lugf22zbsubsf1y6Z gsxl]# sed -i "2cgsxl" t.txt 
    [root@iZbp19lugf22zbsubsf1y6Z gsxl]# cat t.txt 
    vm.swappiness = 6661111
    gsxl
    hello

    四、统计计算:awk

    格式:akw '条件{动作}'

    简单打印此文件的全部内容:awk '{print $0}' /etc/passwd

    [root@iZbp19lugf22zbsubsf1y6Z gsxl]# awk '{print $0}' /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    tcpdump:x:72:72::/:/sbin/nologin
    nscd:x:28:28:NSCD Daemon:/:/sbin/nologin

    常用AWK内置变量,当然还有运算符、函数等更多请自行了解,小龙能力有限只是了解一下。

    变量描述
    $n 当前记录的第n个字段,字段间由FS分隔
    $0 完整的输入记录
    ARGC 命令行参数的数目
    ARGIND 命令行中当前文件的位置(从0开始算)
    ARGV 包含命令行参数的数组
    CONVFMT 数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组
    ERRNO 最后一个系统错误的描述
    FIELDWIDTHS 字段宽度列表(用空格键分隔)
    FILENAME 当前文件名
    FNR 各文件分别计数的行号
    FS 字段分隔符(默认是任何空格)
    IGNORECASE 如果为真,则进行忽略大小写的匹配
    NF 一条记录的字段的数目
    NR 已经读出的记录数,就是行号,从1开始
    OFMT 数字的输出格式(默认值是%.6g)
    OFS 输出记录分隔符(输出换行符),输出时用指定的符号代替换行符
    ORS 输出记录分隔符(默认值是一个换行符)
    RLENGTH 由match函数所匹配的字符串的长度
    RS 记录分隔符(默认是一个换行符)
    RSTART 由match函数所匹配的字符串的第一个位置
    SUBSEP 数组下标分隔符(默认值是/034)

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    五、查找文件:find

    格式:find path -option [ -print ] [ -exec -ok command ] {} ;

    成为四剑客的:find 所以我们也应了解一下。查找可以使用通配符。

    1、-type参数,文件类型:①文件:f    ②目录:d

    [root@iZbp19lugf22zbsubsf1y6Z ~]# find ~/gsxl/ -name *.txt -type f
    /root/gsxl/t.txt

    2、-mtime参数,查找匹配文件创建的前或后时间

    [root@iZbp19lugf22zbsubsf1y6Z ~]# find ~/gsxl/ -name *.txt -mtime -1
    /root/gsxl/t.txt
    [root@iZbp19lugf22zbsubsf1y6Z ~]# find ~/gsxl/ -name *.txt -mtime +30
    [root@iZbp19lugf22zbsubsf1y6Z ~]# 

    3、-size参数,字母是大写,1M以上的文件: +1M

    [root@iZbp19lugf22zbsubsf1y6Z ~]# find / -name *.txt -size +1M
    /usr/share/perl5/Unicode/Collate/allkeys.txt
    /usr/share/hwdata/oui.txt
    /usr/share/hwdata/iab.txt

    4、-perm参数,查找文件权限为755

    [root@iZbp19lugf22zbsubsf1y6Z ~]# find / -name *.txt -perm 755
    /usr/lib/firmware/ivtv-firmware-license-oemihvisv.txt
    /usr/lib/firmware/ivtv-firmware-license-end-user.txt
    [root@iZbp19lugf22zbsubsf1y6Z ~]# 

    如何批量改文件权限,当然目录也可以type参数改为:d,就可以通过用find来批量改:

    [root@iZbp19lugf22zbsubsf1y6Z gsxl]# find ~/gsxl/ -type f -exec chmod -R 644 {} ;
    [root@iZbp19lugf22zbsubsf1y6Z gsxl]# ll
    total 8
    drwxr-xr-x 2 root root 4096 Apr 11 22:55 test
    -rw-r--r-- 1 root root   34 Apr 12 10:10 t.txt

     当然以上四剑客还有很多用法,这只是其中一小小部分,更多使用请根据实际需求进行度娘一下,哈哈!

    欢迎来大家QQ交流群一起学习:482713805 !!!

  • 相关阅读:
    .NET Core技术研究-HttpContext访问的正确姿势
    .NET 5 Preview 1的深度解读和跟进
    玩转VSCode-完整构建VSCode开发调试环境
    China .NET Conf 2019-.NET技术架构下的混沌工程实践
    如何做好开发自测
    .NetCore技术研究-.NET Core迁移前的准备工作
    .NetCore技术研究-一套代码同时支持.NET Framework和.NET Core
    .NetCore技术研究-ConfigurationManager在单元测试下的坑
    统一流控服务开源:基于.Net Core的流控服务
    计组:计算机为什么有反码补码?不列公式!
  • 原文地址:https://www.cnblogs.com/gsxl/p/12684742.html
Copyright © 2020-2023  润新知