*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

原文地址:https://www.cnblogs.com/xiao0913/p/3597124.html