首页 > 代码库 > 实用基本程序

实用基本程序

more/pg/less 逐屏显示文件

q           =》退出
/pattern    =》匹配字符串
/           =》继续查找匹配
more: 空格 显示下一屏   回车  上滚到下一行
pg: 回车 显示下一屏 l 上滚到下一行
less: 可以使用上下左右 pgUP pgDn 等按键

cat/od 列出文件内容

cat   文本格式打印

od 逐字节打印
od参数
-t x1 =》 16进制打印
-c =》 逐字符方式打印文件,遇到不可打印字符打印编码

head/tail

head -15 a  显示头15行
tail -f a   实时打印文件尾部被追加的内容

wc

列出文件中一共有多少行,有多少个单词,多少字符
当指定的文件数大于1时,最后还列出一个合计
常用选项-l:只列出行计数

sort 对文件内容进行排序

默认每行作为一个整体进行排序,进行的是字符串的排序,根据ASCII码进行排序,默认是升序

-n   对于数字按照算术值大小排序,而不是按照字符串比较规则
-b   忽略每行前面开始出的空格字符。
-c   检查文件是否已经按照顺序排序。
-r   以相反的顺序来排序。

tee三通

将从标准输入stdin得到的数据抄送到标准输出stdout显示,同时存入磁盘文件中
ls -al | tee lsfile

正则表达式

元字符
.  *  [   \  ^  $

圆点,星号,反斜线在方括号内时,代表它们自己
^在开头,则表示与集合内字符之外的任意字符匹配

grep 在文件中查找字符串

grep pattern 文件名列表
当找到pattern时,把对应的整行显示出来
如果pattern用到了正则表达式,要用‘‘或者""引起来

egrep 与grep类似,可以使用扩展的正则表达式

+号表示1次或多次
?表示0次或一次
与星号地位类似,限定重复次数 \{m,n\} 例如:[1-9][0-9]\{6,8\}
表示逻辑或的符号 |
圆括号() : 表示分组

egrep 在指定模式方面比grep更灵活,但算法需要更多的处理时间 

fgrep 快速grep

按字符串搜索而不是按模式搜索。
fgrep运算速度快,适合于从大量的数据中进行检索指定字符串,不可按模式查找

grep/fgrep/egrep的选项

-n  显示时每行前面显示行号
-v  显示所有不包含模式的行(就是取非)
-i   字母比较时忽略字母的大小写

sed

sed 命令 文件名列表
sed -f 命令文件  文件名列表

awk 文本处理语言

awk本身也是为了文本的过滤,打印出对应的文本行,这与grep是相似的

用法:
awk ‘程序’ 文件list
awk -f 程序存放的文件  文件list  =》把程序放在文件里

其中程序的格式是 condition {action}

awk内置的变量有

NR 当前记录编号
$0  当前记录
$1、$2... 记录中的第i个域
FILENAME 当前文件名

如果不指定条件,就是对所有航一起做action的处理。条件类似于C语言的<>= && ||  !等
对于使用正则表达式的condition: /pattern/

动作:
print x,y,z
printf("格式串",x,y,z)

awk覆盖了grep的全部功能

示例代码
$ ps -ef | awk /guest/{ printf "%s ",$2 }‘
$cat test.c | awk {printf "%d: %s\n",NR,$0 }  不做处理
$ who | awk /^ *zhang / {printf("%s ", $2)}  

不管是awk还是grep这样的文本处理的工具都是按照行来做处理的,就是每一行都会去匹配条件,匹配成功了输出或者执行action



 

实用基本程序