• 2:数据和提取


    Mail

    新的小插件 tldr tldr简化了烦琐的man的输出帮助信息,只列出关键的语法信息、例子,方便用户使用。

    npm install -g tldr

    vim 的语法 ^$: 行首 行尾

    替换的命令 :%s


    目录

    cut 切分

    grep 检索 [-acinv] <string> <file>

    SORT 排序

    uniq 去重

    插入awk

    split 文件切分

    tr 替换、压缩和删除

    grep 检索 [-acinv] <string> <file>

    WC 统计

    TEE 双向重导项

    XARGS 参数代换

    文本替换


    文本替换

    %s/\text/替换的内容 /[全局替换]/g

    cut 切分

    cut 是以每一行为一个处理对象的 这种机制和 sed 命令一样。 作用剪切数据

    将每个文件中选定的行部分打印到标准输出。

    长选项的强制参数对于短选项也是强制的。

    -b、 --字节=列表

    仅选择这些字节

    -c、 --字符=列表

    仅选择这些字符

    -d、 --分隔符=DELIM

    字段分隔符使用DELIM而不是TAB

    -f、 --字段=列表

    仅选择这些字段;还可以打印任何不包含分隔符的行,除非指定了-s选项

    -带-b的n:不拆分多字节字符

    --补足

    补充所选字节、字符或字段集

    -s、 --仅限分隔符

    不打印不包含分隔符的行

    --输出分隔符=字符串

    使用字符串作为输出分隔符默认情况下使用输入分隔符

    example

    echo ${PATH}   
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    echo ${PATH} | cut -d "/" -f 2

    grep 检索 [-acinv] <string> <file>

    grep搜索命名的输入文件,如果没有命名文件或者如果文件名中给出了一个连字符减号(-),则搜索标准输入以查找包含与给定模式匹配的行。通过默认情况下,grep打印匹配的行。

    grep -n 按照顺序输出行号

    grep -n main 1.c  
    grep -n "main" *  --全部

    grep -v 反向查找 (输出没有找到的) —not in

     last | grep -v "xxx"  

    按照用户查看 cat /etc/passwd 用户 并且读到sync 用户结束

    cat /etc/passwd | cut -d : -f 1 | xargs -n 1 -enync id

    SORT 排序

    sort [-fbMnrtuk] <file_or_stdio>

    -f:忽略⼤小写

    -b:忽略最前面的空格符

    -M:以月份名称排序

    -n:以纯数字⽅式排序

    -r: 反向排序

    cat /etc/passwd | sort -t : -k 3 -n -r

    -u:uniq

    -t:分割符,默认[TAB]

    -k: 以那个区间排序

    cat /etc/passwd | sort -t : -k 3 -n  
    
    cat /etc/passwd  | sort -t: -k 3 -n -- 按数字排序  -第三列 -t 按分隔符分割

    WC 统计

    WC 统计字符,字数,行数

    Øwc [-lwm] <file_or_stdin>

    Ø-l:仅列出⾏号

    Ø-w:仅列出多少字

    Ø-m:仅列出多少字符

    last | grep -v "root" |grep -v "^$" |cut -d " " -f 1|sort -u

    统计去重后的总数

    last | grep -v "root" |grep -v "^$" |cut -d " " -f 1|uniq -c

    统计登录的总数

    last | grep -v "^$" |grep -v "wtmp" |grep "boot" |wc -l 

    主机中本地登录的用户名,按照次数排序,并且输出次数

    last | grep -v "^$" |grep -v "wtmp" |grep "boot" |awk '{print $1}' |  wc -c
    last | grep -v "^$" |grep -v "wtmp" |grep "boot" |awk '{print $1}' | uniq -c
    last | grep -v "^$" |grep -v "wtmp" |grep "boot" |awk '{print $1}' | uniq -c |sort -n -r

    我只有单个用户没有效果

    取区间 的10个用户 通过cut 剪切出-d : -f

     cat /etc/passwd |head -n 20 |tail -n  1

    单独的用户 cut -d 为分割付 ,-f为 第一列头

    cat /etc/passwd |head -n 20 |tail -n  10| cut -d : -f 1

    参数替换了

    uniq 去重

    uniq [-ic]

    -i:忽略⼤小写字符的不同

    -c:进⾏计数

    last | grep -v "root" |grep -v "^$" |cut -d " " -f 1|uniq -c

    插入awk

    last | grep -v "root" |grep -v "^$" |cut -d " " -f 1|uniq -c |sort -n -r | awk '{printf("%s %d\n",$2 ,$1)}'

    嵌入含C 语言的函数

    awk '{printf("%s %d\n",$2 ,$1)}'

    TEE 双向重导项

    重定向到1.log 1.log 则显示1.c 的显示的所有数据

    cat 1.c | tee 1.log

    split 文件切分

    -l num:以num⾏为⼤小切分 ||拆分文件,每个拆分有10行

    split -l 10 filename
    
    example >ls /etc/ |split -l 10   rm x??

    在每个拆分中拆分512字节的文件

    split -b 512 filename

    shell

    XARGS 参数代换

    xargs [-0pne] <command>

    -0:将特殊字符还原为普通字符

    -eEOF:当xargs读到EOF时停⽌

    -p:执⾏指令前询问

    -n num:每次执⾏command时需要的参数个数

    echo  "root" | xargs -n 1 -ezrx  [-p] 为询问

    .参数替换 10 个到20 个id 展现了

    cat /etc/passwd |head -n 20 |tail -n  10| cut -d : -f 1 | xargs -n 1 id

    tr 替换、压缩和删除

    tldr tr

    tr -s 压缩

    tr -c

    替换 —将第一个集合的每个字符映射到第二个集合的相应字符 1 对应替换

    example—> tr 'abcd' 'jkmn' < filename

    tr 'inclue' 'aaaa' < 1.log

    tr -d 'input_characters' < filename

    从输入中删除指定字符集的所有匹配项

    tr -d 'inclue' < 1.log

    将一系列相同的字符压缩为单个字符:

    tr -s 'input_characters' < filename

    cat 1.c |tr -d 'include' | tr -s  ' '

    小写换成大写 -大写换小写

    tr "[:lower:]" "[:upper:]" < 1.log

    本地的etc 目录下的文件及目录,每十条保存到一个文件中

    tail -1 参数为行数

    — 显示文件中最后的“count”行

    rev 字符串颠倒

    思考题目:

     "1 2 3 4 5 6 7 9 a v 你好 ./8"

    bash 计算 $[ ]

    echo "1 2 3 4 5 6 7 9 a v 你好 ./8" |tr -s -c "0-9" " "
    echo "1 2 3 4 5 6 7 9 a v 你好 ./8" |tr -s -c "0-9" " "| echo $[`tr " " "+"` 0]

    常用符号:cat>> 正向读 <<作为输入提供

    a.txt | tr ""  "\n" | sort | uniq -c | sort -n -r 

    AWK文本数据处理 <要点

    可以传C语言 传入参数

    cat /etc/passwd | awk -F: -v SUM=${SUM} -v cnt=${cnt} 'BEGIN {printf("Hi \n")}'
    cat /etc/passwd | awk -F: -v SUM=${SUM} -v cnt=${cnt} 'BEGIN {printf("Hi \n")} {if($3<100){printf("cnt=%d,name=%s,id=%d",++cnt,$1,$3);sum+=$3; printf("sum=%d\n",sum)}} '

    传出参数eval

    测试

    cat /etc/passwd | awk -F: -v SUM=${SUM} -v cnt=${cnt} '{if($3<100){++cnt; sum+=$3;}} END {printf("sum=%d \n avg=%d\n",sum,sum/cnt)}'

    将参数传出

    END的计算完成后的参数都可以传出

    eval  ` cat /etc/passwd | awk -F: -v SUM=${SUM} -v cnt=${cnt} '{if($3<100){++cnt; sum+=$3;}} 
    END {printf("sum=%d \n avg=%d\n",sum,sum/cnt)}'`
     
  • 相关阅读:
    拓扑排序
    数论初步(费马小定理)
    HDU
    HDU
    八月馒头
    萌新仓鼠,参上!
    新姿势
    字典树
    HDU
    Codeforce
  • 原文地址:https://www.cnblogs.com/yijieyufu/p/16423171.html
Copyright © 2020-2023  润新知