KiMoGiGi 技术文集

不在乎选择什么,而在乎坚持多久……

IT博客 首页 联系 聚合 管理
  185 Posts :: 14 Stories :: 48 Comments :: 0 Trackbacks
1、--help

当要获取相关指令的帮助时,在指令后打--help,即会显示帮助信息。

grep --help

2、ls 和 ll

* 两个指令是显示当前文件夹的文件。
ls只是显示文件名,ll会以列表形式显示文件名,并且会有日期、大小等。

* ll -h
这样文件大小就会以我们平常可读的形式显示,如10k,100M等。

3、pwd
显示当前目录路径

4、vi

* 直接打开文本
vi +n path
打开文件,并将光标置于第n行首

* vi的快捷键
http://www.lpfrx.com/wp-content/uploads/2008/09/vi.jpg
常用快捷键
ctrl + u 向上翻半屏
ctrl + d 向下翻半屏
ctrl + b 向上翻一屏
ctrl + f 向下翻一屏

/pattern 从光标开始向文件尾开始搜索pattern
?pattern 从光标开始向文件首开始搜索pattern
n 同一方向重复上一次搜索指令
N 反方向重复上一次搜索指令

:q! 不保存文件并推出

5、grep

* 显示文本内容的匹配行
如:grep pattern filename
pattern可以是正则

* -r 可以递归文件夹搜索
grep 139 filename* -r

* -A -B -n 可以显示匹配行的前后几行
grep 139 filename -A 2 #显示匹配139行的后2行
grep 139 filename -B 1 #显示匹配139行的前1行
grep 139 filename -3   #显示匹配139行的前3行和后3行

* -h 打印结果时,不显示文件名,使结果看起来清爽一点

* -m 打印匹配的前几项
grep 139 filename -m 10 #显示匹配前10行

* -n 打印结果时,前面带行号

* -v 打印不匹配的行

* --color 把匹配的文本标红色

6、cat
打印文本

7、sort
对结果排序

-k是指排序的列,1为第一列;-t是指定分隔符,默认为空格;-n列以数字形式排序;-r为倒序。
这些选项大多都可以合并


sort -k1nr
即结果第一列以数字形式倒序形式排列。

8、uniq
唯一统计,-c是显示统计结果

9、awk

结构如下
awk 'BEGIN{command} condition {command_line} END {command}' file

-F 为指定分隔符,默认为空格

常用内置函数如下
gsub(reg,string,target) 每次常规表达式reg匹配时替换target中的string
index(search,string) 返回string中search串的位置
length(string) 求串string中的字符个数
match(string,reg) 返回常规表达式reg匹配的string中的位置
printf(format,variable) 格式化输出,按format提供的格式输出变量variable。
split(string,store,delim) 根据分界符delim,分解string为store的数组元素
strftime(format,timestamp) 返回一个基于format的日期或者时间串,timestmp是systime()函数返回的时间
sub(reg,string,target) 第一次当常规表达式reg匹配,替换target串中的字符串
substr(string,position,len) 返回一个以position开始len个字符的子串
totower(string) 返回string中对应的小写字符
toupper(string) 返回string中对应的大写字符  


常用内置标量如下
FNR 当前文件中的记录号
FS  输入域分隔符,默认为一个空格
RS  输入记录分隔符
NF  当前记录里域个数
NR  到目前为止记录数

例子:
搜索iis生产线日志,打印出执行描述超过5000ms的行:
awk 'NF==17 && $NF>5000 {printf("%-8s: %s %s %-50s %-17s %-4s %s %s %-8s %+7s  \n",FNR,$1,$2,$6,$10,$14,$12,$15,$16,$NF/1000);}' ex100823.log
解释:
NF == 17 :保证日志行有17列,可以屏蔽一些其他行
$NF > 5000 :$NF就是第17列,即最后列(一般我们的iis日志都是最后一列为执行事件)
printf :打印行,并格式化。按生产线的日志,打印的列分别如下所示
"行号","日期","时间","链接","客户ip","win状态","http状态","发送字节数","接受字节数","时间(单位秒)"

10、top
监控当前进程执行状况

11、head和tail
分别为查看文本的头几行和尾几行
tail -f filename
可以监控文件的写入

12、ifconfig
当前机器的网卡状态


posted on 2010-08-25 17:03 KiMoGiGi 阅读(469) 评论(1)  编辑 收藏 引用 所属分类: 经验之谈

评论

# re: 【原】开发总结3 -- shell 简单指令 2010-10-15 11:40 moncler coats
很详细的分析,。http://www.monclerjacketstyle.com/  回复  更多评论
  

只有注册用户登录后才能发表评论。