zoukankan      html  css  js  c++  java
  • 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 !!!

  • 相关阅读:
    入门菜鸟
    FZU 1202
    XMU 1246
    Codeforces 294E Shaass the Great 树形dp
    Codeforces 773D Perishable Roads 最短路 (看题解)
    Codeforces 814E An unavoidable detour for home dp
    Codeforces 567E President and Roads 最短路 + tarjan求桥
    Codeforces 567F Mausoleum dp
    Codeforces 908G New Year and Original Order 数位dp
    Codeforces 813D Two Melodies dp
  • 原文地址:https://www.cnblogs.com/gsxl/p/12684742.html
Copyright © 2011-2022 走看看