实用基本程序
两文件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