• shell常用


    1.Linux的体系结构

    image-20211216174610105

    2.Shell:命令解释器,可编程

    没有图形文件之前,shell充当用户界面

    常用指令(重要)

    ls

    cat 查看文件

    less 查看文件

    more 查看文件

    tail 查看文件

    vi 编辑文件

    vim 编辑文件,更为流行

    ps -ef

    tail

    查看占用的端口并删除(重要)

    1.使用cmd查看占用端口进程,命令:netstat -ano | findstr 端口号

    image-20211221154421121

    2.使用命令关闭:taskkill -PID 进程号 -F

    image-20211221154359034

    3.查找特定文件?

    find指令

    在指定目录下查找文件
    find -name "file.java"
    
    全局搜索文件
    find / -name "file.java"
    
    查找所有以fil开头的文件  模糊查找文件
    find ~ -name "fil*"				
    	~ :就是进入home目录
    	*:就是通配符的意思
    
    同时忽略大小写,不区分大小写
    find ~ -iname "fil*"		
    	-:在-name中加上i,即iname
    

    4.检索文件内容?

    grep指令

    grep:查找文件里符合条件的字符串
    
    查找文件内容包含”AAA“以   BBB开头的文件
    grep “AAA” 	BBB*
    
    只会帅选出目标字符串所在的行
    

    实战:

    image-20211216180344160

    管道操作符|

    可将指令连接起来,前一个指令的输出作为后一个指令的输入

    image-20211216180719932

    find ~ | grep "target"
    也就是先查找所有文件,然后在结果集中查找包含target的字段
    

    注意:

    1、只处理前一个命令正确输出,不处理错误输出

    2、右边命令必须能够接受标准输入流,否则传递过程中数据会被摒弃

    3、sed,awk,grep,cut,head,top,less,more,wc.join,sort,split等

    find -dwdwwdw | grep “abc”  前一个命令错误,后面的grep就无效了!
    

    查找日志文件中指定字符串

    在bsc-data.info.log日志中查找包含 "partire[true]"字符串的日志记录
    grep "partire\[true\]" bsc-data.info.log 
    
    可以找到多个,但是每个日志打印的东西太多了,比如只想知道这次日志的用户openid是多少,一直用户的openid格式
    是useropenid[dwu8u982289e28]   []里面是字符加数字,则可以用如下的方法来查找
    -o 帅选出符合正则表达式的内容
    grep "partire\[true\]" bsc-data.info.log | grep -o 'useropenid\[[0-9a-z]*\]'
    

    查询某一个进程

    比如查找tomcat进程

    ps -ef | grep tomcat   这回把自己查询的进程也列出来
    ps -ef | grep tomcat | grep -v "grep"  过滤包含grep字符串   这样就只找出tomcat的进程啦!
    -v就是过滤相关字符串的内容
    

    5.对文件内容做统计

    awk

    一次读取一行文本,按输入分隔符进行切片,切成多个组成部分!

    将切片直接保存在内奸的变量中,$1$2...($0表示行的全部)

    支持对单个切片的判断,支持循环判断,默认分隔符为空格

    帅选出第一列和第四列的数据:

    帅选出某些类的数据

    image-20211216183007932

    条件帅选出某些列的数据

    帅选出第一列是tcp,第二列等于1的数据

    image-20211216183147974

    显示出表头

    想要同时显示出表头 加上 NR==1

    image-20211216183303833

    自定义分隔符

    awk默认使用【空格】将数据分开来识别的,但我们也可以使用别的

    将逗号作为分隔符!

    -F 表示以什么符号作为分隔符去分割行内容

    image-20211216183610950

    统计日志中对不同数据进行分组

    image-20211216183847490

    分析语句:

    awk '{enginearr[$1]++}END{for(i in enginearr)print i "\t" enginearr[i]}'

    end 之前表示一旦出现相同的值就++

    end后表示扫描结束后做什么 遍历enginearr数组,遍历打印其值

    6.批量替换文档内容

    sed

    流编辑器

    适合用于对文本的行内容进行处理

    将str改成string

    image-20211216184832446

    其中 ’s/Str/String/‘中的s表示字符串操作,表示以Str开头,String表示替换成的字符串

    sed操作是将修改后的内容输出到终端,不会修改文件本身的内容,若果要修改,必须加上【-i】

    将【.】结尾改成【;】

    image-20211216185154318

    其中【\】是转义的意思,因为【.】和【;】都是特殊字符串,需要转义,$表示以什么什么结尾

    全文替换

    g表示全部替换,没有 g就是只替换一次

    image-20211216185447516

    删除空行

    image-20211216185849307

    ^表示开头,就是以空格开头,*是通配符,$就是结尾的意思,d表示删除

    删除Integer字符串在的行

    image-20211216190012707

  • 相关阅读:
    Noip2012 开车旅行
    「NOI2018」归程
    2019.10.30 队测(晚上)
    洛谷P1138 第k小整数
    洛谷P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold
    Noip-pj2018游记
    洛谷P4994 终于结束的起点
    《退役的你》
    《膜你抄》
    洛谷P5087 数学
  • 原文地址:https://www.cnblogs.com/yslu/p/15699879.html
Copyright © 2020-2023  润新知