zoukankan      html  css  js  c++  java
  • *nix杂项收集

    grep 条件或

    grep 'usrquota|grpquota' /etc/fstab ###单引号

    netstat -an | grep -e EST -e WAIT
    并列使用多个 -e参数可以实现或条件

    netstat -an | grep -E "ESTABLISHED|WAIT" 双引号

    如何把一行竖排的数据转换成横排?
    awk '{printf("%s,",$1)}' filename

    批量删除
    删除所有.svn的文件夹find . -name ".svn"|xargs rm -rf
    遍历删除?rm $(grep -lR 'patten' /path/*)
    find . -type f -size 0 -delete
    find . -type f -not -name '*7z*' -delete
    find . -type f -not ( -name 'bin*' -or -name 'ss*' ) -delete
    find . -type f -not -mtime -15 -delete 删除15天前的
    find . -type f -name *.c -print
    rm -i `find ./ -maxdepth 1 -size 0`

    在Debian中使用apt-get安装软件包时经常会提示让你插入netinst的光盘:Media change: please insert the disc labeled
    当没有时就无法进行安装了, 这时可以打开文件/etc/apt/sources.list文件,注释掉cdrom那一行,
    然后再执行apt-get update更新下deb仓库, 这样以后再使用apt-get安装时就不会再搜寻cdrom了

    查看服务开启: 如 ps -aux |grep sshd

    计算代码行(非空行): grep -c [^$] lua/test.lua

    awk删除重复行

    awk '!a[$0]++' sd.txt
    在awk中,对于未初始化的数组变量,在进行数值运算的时候,会赋予初值0,因此a[$0]=0,++运算符的特性是先取值,后加1,
    因此Pattern等价于 !0而0为假,!为取反,因此整个Pattern最后的结果为1,相当于if(1),Pattern匹配成功,输出当前记录,
    对于sd.txt文件,前3条记录的处理方式都是如此。当读取第4行数据“hello world”的时候,a[$0]=1,取反后的结果为0,
    即Pattern为0,Pattern匹配失败,因此不输出这条记录,后续的数据以此类推,$0表示行,成功实现去除文件中的重复行。
    修改为$1表示首列,则只判定该列是否重复。

    日志条件判定:cat citybin/ss.log*|grep time:|awk -F ':' '{if($7>30) {printf("%s ",$0)};}'

    批量重命名:eg删除文件名中的-字符:rename 's/-//g' *.txt --rename某些平台下有如debian
    rename 'y/A-Z/a-z/' * # 把文件名改为小写:

    alias lf='ls -l|grep "^-"'   只显示文件

    计算文本中出现频率最多前10的单词: cat sd.txt | tr -s '[:space:]' ' ' |tr '[:upper:]' '[:lower:]'|sort|uniq -c|sort -nr|head -10

    中文乱码问题:
    1.系统字符集支持。设置LANGUAGE="zh_CN:zh:en_US:en" LANG=zh_CN.UTF-8
    2.SecureCRT的appearance character encoding设置utf8

    解压到指定目录,目录要存在
    tar -zcvf xxx.tar path 解包:tar zxvf /bbs.tar.zip -C /zzz/bbs  tar -jxvf xx.tar.bz2 -C path查看包内容:tar -tvf mysqlt.tar
    zip –r name.zip path 解包:unzip test.zip -d /root/     查看包内容:unzip -l name.zip

    apt-get update出现NO_PUBKEY错误的解决方法
    复制错误提示的key值如:3B4FE6ACC0B21F32执行
    apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32

    查看端口占用:netstat -tln | grep 8083 端口被哪个进程占用 lsof -i :8083

    查看CPU:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

    myLongScript && echo -e 'a' || (echo -e 'a'; sleep 1; echo -e 'a') 长耗时脚本执行完发出声音

    top -b -d 1 | grep --line-buffered -we ss -we ws
    while :;do top -b -n 1 | grep -w ss; done & #循环指令
    数据图形化
    top -b -d 1 | grep --line-buffered -we ss >> dat.txt
    :1,$s/ +/,/g 替换空格,保存为csv,用excel打开,插入图表,图表右键选取数据,双击y坐标改下百分比格式

    date -s "2016-11-11 10:21:32"

    实现替换换行符 sed ":a;N;s/ //g;ta" a.txt

    获取执行脚本文件路径
    fdir=$(cd $(dirname $0); pwd)

    打印所有匹配行及其后1行 grep 'keyword' -A1 access.log
    打印所有匹配行及其前1行 grep 'keyword' -B1 access.log
    打印所有匹配行及前后1行 grep 'keyword' -C1 access.log

    打印所有匹配行及其前1行 sed '$!N;/错误/P;D' access.log
    sed 打印匹配行的上一行 sed -n '{/access fail/{g;p}};h' access.log
    输出匹配行的前3行 seq 10 | sed -n '1,3N;N;s/ 5//;ta;D;:a;p'
    将是输出匹配行的前2行即 seq 10 | sed -n '1,2N;N;s/ 5//;ta;D;:a;p'

    打印所有匹配行及其前1行 awk '/错误/{print a" "$0}{a=$0}' access.log
    打印本行和下一行 awk '/关键字/{getline v;print $0" "v}'
    输出匹配行和下一行 awk '$0~/keyword/{print $0; getline; print $0;}' access.log
    awk 输出配行及下三行 awk '/games/{p=4}p-->0' access.log

    1.删除匹配行的上一行和下一行:
    sed -i -e '/string/{n;d}' -e '$!N;/ .*string/!P;D' access.log

    2.sed中使用变量,删除匹配行的上一行和下一行:
    AA=string #变量指定匹配字符串
    sed -i -e '/'"$AA"'$/{n;d}' -e '$!N;/ .*'"$AA"'$/!P;D' access.log

  • 相关阅读:
    LibreOJ 6003. 「网络流 24 题」魔术球 贪心或者最小路径覆盖
    LibreOJ #6002. 「网络流 24 题」最小路径覆盖
    LibreOJ #6000. 「网络流 24 题」搭配飞行员 最大匹配
    LibreOJ 2003. 「SDOI2017」新生舞会 基础01分数规划 最大权匹配
    hdu 1011 Starship Troopers 树形背包dp
    Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland dfs
    hdu 6199 gems gems gems dp
    hdu 5212 Code 筛法或者莫比乌斯
    hdu 3208 Integer’s Power 筛法
    hdu 5120 Intersection 两个圆的面积交
  • 原文地址:https://www.cnblogs.com/xiao0913/p/3597124.html
Copyright © 2011-2022 走看看