linux管道命令
1.grep [-acinv] 'keyword' filename
参数说明:
-a : 在二进制文件中,以文本文件方式搜索数据
-c : 找到keyword的次数
-i : 忽略大小写
-n : 输出行号
-v : 反向选择,显示没有keyword的行
egrep 支持扩展型正则:+?|()
2.sed [-nefr] [动作]
参数说明:
-n : 使用安静(silent)模式,一般情况下所有来自STDIN的数据都会显示在屏幕上,加上-n则只有经过sed处理才显示
-e : 直接在命令行模式上进行sed的操作编辑
-f : 直接将sed操作写在一个文件内,-f filename 则可以执行文件内sed操作
-r : sed操作支持的是扩展正则表达式语法(默认为基础正则)
操作说明: [n1[,n2]] function,n1,n2(不一定存在)代表选择操作的行数如20-30[操作行为]
a :新增,a后面可以接字符串,字符串会在当前的下一行出现
c :替换,c后面可以接字符串,这些字符串可以替换n1,n2之间的行
d :删除,不需接任何内容
i :插入,i后面接字符串,字符串在当前的上一行出现
p :打印,打印某个选择的数据,通常与sed -n一起运行
s :搜索,不但可以搜索,还可以替换,如:1,20s/old/new/g
例 nl /etc/passwd | sed '2,5d' 将2-5行不显示
3.awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
awk内置变量:
NF : 每一行($0)拥有的字段总数
NR :当前awk所处理的是“第几行”数据
FS : 当前分隔符,默认空格键
例: cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}'
4.cut 将一段消息的某段切出来,以行为单位处理,常用于分析log文件
参数:
-d:后面接分隔符,与-f一起使用
-f:根据-d的分隔符将一段消息分为数段,-f表出取出第几段
-c:以字符为单位取出固定的字段范围
例:
echo $PATH | cut -d ':' -f 3,5 第3和第5段
/usr/local/sbin:/sbin
echo $PATH | cut -d ':' -f 3-5
/usr/local/sbin:/usr/local/bin:/sbin 第3到第5段
5.sort,对字段进行排序,sort [-fbMnrtuk] [file or stdin]
参数:
-f : 忽略大小写差异
-b :忽略最前面的空格符部分
-M :以月份名字来排序(JAN,DEC)
-n :使用纯数字进行排序(默认以文字类型来排序)
-r :反向排序
-u : uniq,相同的数据中,仅出现一行表示
-t : 分隔符,默认tab键
-k : 按那个字段排序
6.uniq,去除重复
参数:
-i:忽略大小写
-c:进行计数
7.wc,计算输出消息的整体数据
参数:
-l:仅显示多少行
-w:仅显示多少字(英文单词)
-m:多少字符
8.tee [-a] file
-a:以累加的方式输入到文件中
在使用管道命令的同时可将中间的输出写入文件(last | tee last.list | cut -d " " -f1
9.字符转换命令
tr [-ds] SET1 ...
-d 删除消息中的SET1字符串,-s 替换重复的字符
例:所有小写变大写:last | tr '[a-z]' '[A-Z]'
col [-x] ,-x 将tab键转换成对等的空格键
join [-ti12] file1 file2 处理两个文件之间的数据
-t 默认以空格符分隔数据,并比较第一个字段的数据
-i 忽略大小写 -1 第一个文件要用那个字段来分析 -2 第二个文件要用那个字段来分析
例:join -t ':' -1 4 /etc/passwd -2 3 /etc/shadow 常用于处理相关文件
paste [-d] file1 file2 , -d 分隔符,默认tab,-表示来自标准输入
直接将两行贴在一起,不需像join一样有关联
例:cat /etc/group | paste /etc/passwd /etc/shadow -|head -n 3
expand [-t] file 将tab键转换成空格键 ,例:cat test.txt | expand -t 6 - ,将tab转成6个空格输出
10.split拆分命令,可将大文件拆分为小文件
split [-bl] file PREFIX
参数:
-b:后接要拆分的文件大小,如b,k,m
-l:按行数拆分
例:split -l 100 error.txt test,会出现很多test开头的文件
11.xargs [-0epn] command,以空格或换行作为标识,将stdin的数据分隔成参数
参数:
-0:输入含特殊字符(`,\等),-0可以还原成一般字符
-e:eof,后面可接字符串,当xargs分析到这个字符串时停止工作
-p:执行每个参数都询问用户
-n:接次数,每次command命令执行要使用的参数
例:cut -d':' -f1 < /etc/passwd | head -n 3|xargs -p finger
对php的error_log进行统计排序命令 sed 's/.*]\ //g' error.txt | sort|uniq -c|sort -k 1 -n -r或cut -d ']' -f 2 error.txt |sort| uniq -c | sort -k 1 -rn
sed把前面的时间给清掉,sort对内容按ascii排序,uniq去重,-c对重复进行统计,sort -k 1根据第一个数(上一步统计的次数为第一个数)进行排序,-n按大小值排序,默认是按字符排序(2>11)的,-r倒序