实用基本程序

两文件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

tr:翻译字符

tr String1 String2
把stdin拷贝到stdout,string1中出现的字符替换为string2中的对应字符
cat report | tr '[a-z]' '[A-Z]' 
cat file1 | tr % '\012'    这里\000 三个八进制数字表示的一个字符

cmp 两文件逐个字节比较

cmp file1 file2
逐字节比较两个文件是否完全相同
两个文件完全相同时,不给出任何提示
两个文件不同时,打印出第一个不同之处

md5sum

md5sum file 得到文件的16字节的hash值  MD5算法
sha1sum file  得到文件的20字节的hash值  SHA-1算法

diff 得到两个文件的差别

diff file1 file2 
发现不同,就列出一个如何将file1转化为file2的指令
这些指令有a(Add),c(Change)和d(Delete) 
指令字母左边的行号是file1的行号,右面是file2的行号
列出内容时,大于号后边的内容是需要在file1文件中增加的内容;
小于号后边的内容是需从file1中删除的内容
-b 忽略每行后面多余的空格
-e 生成一个脚本文件,ed命令使用这个脚本程序编辑file1文件就能变成file2文件

L1 a L2,L3 
>file2 的L2-L3行的内容    将file2的第L2-L3追加到file1的L1之后

L1,L2 c L3,L4            
<file1的L1-L2行内容
----
>file2的L3-L4行的内容     将file1的L1-L2换成file2的L3-L4

L1,L2 d L3
<file1的L1-L2行内容       将file1 的L1-L2行删除之后,九个file2的L3之后的内容相同了

patch命令

也是类似于diff -e的选项
patch -p0 testfile1 testfile.patch

 

 

 

posted @ 2017-04-16 22:47  Zview  阅读(343)  评论(0编辑  收藏  举报