• Linux常用指令-更新完毕


    文件查找 find

    简单的find

    # 查找当前目录下的某个文件
    find -name "target.java"
    

    带有正则表达式的find

    #从根目录下 . 用户目录 ~ 查找某个文件
    find . -name "target.*"
    # 这里需要注意的是'和"在对于普通字符串来说是没有区别的,对于find -name来说""中只会被最终解析成一个字符串
    

    忽略大小写

    # 忽略大小写
    find -iname 'target.*'
    

    其他指令

    man find
    

    检索文件内容-grep

    grep [options] pattern [file]
    

    全称:Global Regular Expression Print

    作用:查找文件里符合条件的字符串

    补充:部分符合,不是完全匹配,必须要和patter符合,并且是按行匹配。strpattern

    str pattern match
    'strrrrr' 'str' 'strrr1'
    'trrrrr' 'str' None
    'trrr1
    str something behind you
    strr1
    st
    end'
    'str' 'str something behind you
    strr1'
    'trrr1
    str something behind you
    strr1
    st
    end'
    'str*' 'str something behind you
    strr1
    stend'
    存疑(表达式中是正则表达式'r*'可能存在r)

    指令man:

    • -o, --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. -o输出正则表达式匹配的数据不是行
    • -v, --invert-match Invert the sense of matching, to select non-matching lines.-v 反向过滤
    # 找出日志中WARN 的部分并使用-o打印出对应部分 'WARN'
    grep 'WARN' house-info.log | grep -o 'WARN'
    
    # 去除自身的部分
    ps -aux  | grep postfix | grep -v 'grep'
    # 匹配以A开头的
    grep '^A' house-info.log 
    # 匹配以B结尾的
    grep 'B$' house-info.log
    # 匹配正整数
    grep '[1-9][0-9]*' house-info.log # 由于默认的模式下不支持d 和 D,+.?,+被改为了+,?为?
    

    流重定位符

    /> 用于重定向流到文件中,会进行覆盖而不是追加

    />>用于重定向流到文件中,进行追加

    0:屏幕输入流,1:屏幕正确输出流,2:屏幕错误输出流

    1>:以覆盖的的方式将正确的数据重定向到指定的文件或装置上

    2>:以覆盖的方式将错误的数据重定向到指定的文件或设备上

    既然已经提到流重定向,不放再提提Linux黑洞 /dev/null,能处理不需要的信息

    command>a 2>a 与 command>a 2>&1的区别

    通过上面的分析,对于command>a 2>&1这条命令,等价于command 1>a 2>&1可以理解为执行command产生的标准输入重定向到文件a中,标准错误也重定向到文件a中。那么是否就说command 1>a 2>&1等价于command 1>a 2>a呢。其实不是,command 1>a 2>&1command 1>a 2>a还是有区别的,区别就在于前者只打开一次文件a,后者会打开文件两次,并导致stdout被stderr覆盖。&1的含义就可以理解为用标准输出的引用,引用的就是重定向标准输出产生打开的a。从IO效率上来讲,command 1>a 2>&1command 1>a 2>a的效率更高。

    也就是说command 1>a 2>a打开两次文件

    awk 三个人名

    awk [选项参数] 'script' var=value file(s)
    或awk [选项参数] -f scriptfile var=value file(s)

    awk -F "splitor"

    awk需要制定文件分割符,默认为' ' ,需要注意的是空格的指定是通过-F。常用的常量包括NR(Number of Rows行数),FS(不知道英文 当前行分割符),NF(当前拥有的字段数 $0的长度)

    grep '[ ACC ]' new.txt | awk -F " " '{res[$9]++ }END{for(i in res){print 'name:' i "	number:" res[i]}}'
    # 统计每个单词出现的次数 以空格为分割符
    awk -F " " '(NR>=1){res[$9]++ }{print "rows:"NR "	name:"$9 "	NF:"NF}END{for(r in res)print r "	number:" res[r]}' new.txt
    
    

    需要注意的是每行执行体中只能执行一个语句{}{res[$9]++ print $9}是不正确的需要改为{res[$9]++}{print $9}

    '和"

    '表示纯粹的字符串

    "表示的字符串还需要经过解析

    n = 3
    echo '$n' # '$n'
    echo "$n" # 3
    
    

    sed指令

    sed全名为stream editor 流式编辑器,也是一个以行为单位的工具,主要用于替换而不是查找,统计

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

    字符串替换opeartion/old/new/modelmodel为可选参数g|Noneg代表替换一行中的所有匹配的东西

    替换操作s

    # 进行替换而不修改原来的文件 替换全部str为String 注意包含有g,意味着全部替换
    sed '/s/str/String/g' 	target3.java
    # 进行替换并修改文件
    sed -i ........
    # 替换文件并修改到指定的临时文件上 注意使用的是"",使用双引号而不是单引号可以使shell脚本更加灵活
    sed -f "newFile_$$" '/s/str/String/g' 	target3.java
    
    
    

    删除和打印操作

    sed -n '1p' file #显示第一行
    sed -n '$p' file #显示最后一行
    sed -n '1,2p' file #显示第一行到最后一行
    sed -n '1,$p' file
    # 删除的话将p换为d
    
    

    需要进行更加复杂的定位比如第二行到倒数第三行需要在自己计数给出范围

    tar指令

    -z,--gzip,--gunzip,--ungzip 调用gzip执行压缩或解压缩。

    -v,--verbose 列出每一步处理涉及的文件的信息,只用一个“v”时,仅列出文件名,使用两个“v”时,列出权限、所有者、大小、时间、文件名等信息。

    -f,--file [主机名:]文件名 指定要处理的文件名。可以用“-”代表标准输出或标准输入

    -x,--extract,--get 解开tar文件

    -c,压缩文件

    压缩

    tar -czvf
    

    解压

    tar -xzvf
    
    内容来自博客园,拒绝爬虫网站
  • 相关阅读:
    5-4 链表的天然递归结构性质
    java8 Optional 解析
    [leetcode] Unique Binary Search Trees
    [leetcode] Anagrams
    [leetcode] Valid Number
    构造素数表2
    构造素数表1
    整型所占字节
    习题7-8 字符串转换成十进制整数
    习题7-7 字符串替换
  • 原文地址:https://www.cnblogs.com/Heliner/p/11074707.html
Copyright © 2020-2023  润新知