- 浏览: 672082 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yigeisme:
你好,不已.html和.jsp和.jpg结尾的正则表达式怎么写 ...
深入入门正则表达式(java) - 2 - 基本实例 -
su1216:
多谢指正yigeisme 写道1-12(小时,月份)正则:^( ...
深入入门正则表达式(java) - 2 - 基本实例 -
yigeisme:
1-12(小时,月份)正则:^(1[012]|\d)$应该改成 ...
深入入门正则表达式(java) - 2 - 基本实例 -
heikefangxianceshi:
小三将军 写道楼主,我想问下你给的Real.tar.gz是什么 ...
android手机root后的安全问题 (一) -
heikefangxianceshi:
这个程序运行的前提是手机root,但你的手机怎么root的呢? ...
android手机root后的安全问题 (一)
学习笔记,内容基础,适合初学者。
阅读之前,请务必花30秒查看前言说明(在第一、二章前面部分)
《Unix & Linux 大学教程》 - 第一、二章 学习笔记 Unix简介 & 什么是Linux?什么是Unix
《Unix & Linux 大学教程》 - 第三、四章 学习笔记 Unix连接 & 开始使用Unix
《Unix & Linux 大学教程》 - 第五、六章 学习笔记 GUI:图形用户界面 & Unix工作环境
《Unix & Linux 大学教程》 - 第七、八章 学习笔记 Unix键盘使用 & 能够立即使用的程序
《Unix & Linux 大学教程》 - 第九、十章 学习笔记 文档资料:Unix手册与Info & 命令语法
《Unix & Linux 大学教程》 - 第十一、十二章 学习笔记 shell & 使用shell:变量和选项
《Unix & Linux 大学教程》 - 第十三章 学习笔记 使用shell:命令和定制
《Unix & Linux 大学教程》 - 第十四、十五章 学习笔记 使用shell:初始化文件
《Unix & Linux 大学教程》 - 第二十一章 学习笔记 显示文件
《Unix & Linux 大学教程》 - 第二十二章(一) 学习笔记 vi文本编辑器(一)
《Unix & Linux 大学教程》 - 第二十二章(二) 学习笔记 vi文本编辑器 (二)
《Unix & Linux 大学教程》 - 第二十二章(三) 学习笔记 vi文本编辑器 (三)
《Unix & Linux 大学教程》 - 第二十四章 学习笔记 目录操作
《Unix & Linux 大学教程》 - 第二十五章 学习笔记 文件操作
《Unix & Linux 大学教程》 - 第二十六章(一) 学习笔记 进程和作业控制
《Unix & Linux 大学教程》 - 第二十六章(二) 学习笔记 进程和作业控制
《Unix & Linux 大学教程》 - 附录F 时区与24小时制时间
第十九章:过滤器:选取、排序、组合及变换
第十九章第一部分
基础知识
程序/命令
grep(re代表regular expression,正则表达式;g代表global,全局;p代表print,打印)
语法
grep [-cilLnrsvwx] pattern [file...]
pattern是要搜索的模式(翻译的实在让人太不爽了,pattern应该就是要搜索的内容吧?!)
file是输入文件的名称
-c(count,统计):显示所抽取行的数量
-i(ignore,忽略):忽略大小写
-n:在输出的每一行前面写一个相对行号
-l(list filename,列举文件名):指定此选项时,grep不显示包含该模式的各行,而是将包含这种模式的文件名称列出来
-L:与-l相反,将不包含这种模式的文件名称列出来
-w:指定只希望搜索完整的单词
-v(reverse,相反):选项选取不包含指定模式的所有行。
-x:查找pattern占用整行的那些行
-r(recursive,递归):递归搜索子目录以及子目录下的所有文件
-s(suppress,抑制):搜索的时候,不显示类似于下面的log
Permission denied
fgrep:快速版本的grep,只搜索“固定字符”的字符串,不允许使用正则。
egrep:grep的扩展版本,原始的grep只允许基本的正则表达式,egrep支持功能更强大的“扩展正则表达式”。(第20章讨论他们的区别)
使用grep -E和egrep允许使用扩展正则表达式。
look
语法
look [-df] pattern file...
pattern是搜索模式
file是文件名称
作用:程序搜索以字母顺序排列的数据,并查找所有以特定模式开头的行。
look不能从标准输入中读取数据,它必须从一个或多个文件中获取输入。因为它使用二分法查找,需要同时访问所有数据。
所以只能在管道开头使用,但是不能在管道中间使用它。
-d:忽略标点符号和其他特殊字符
-f(fold,同等):告诉sort忽略大小写
look pattern
查找以pattern开头的单词(在dictionary file - 字典文件中查找)
sort
语法
sort [-dfnru] [-o outfile] [infile...]
outfile是存放输出的文件的名称
infile是包含输入的文件的名称
作用:排序数据
如果想将输出保存到输入的文件中(比如:想对names文件排序,然后再输出到names中),需要使用-o选项
sort -o names names
否则,当重定向标准输出时,shell在运行命令之前建立输出文件,所以下面的命令会导致names被清空,然后执行sort,所以最终结果就是names是个空文件。
sort names > names(错误)
-d(dictionary,字典):只查看字母、数字和空白符(空格和制表符)。当数据中包含可能妨碍排序过程的字符(标点符号等),可以使用这个选项
-f(fold,等同):忽略大小写
-n(numeric,数字):识别行开头或者字段开头的数字,并按数字进行排序。数字可以包含前导0、负号和小数点
-r(reverse,反向):反向排序
-u(unique,唯一):查找相同的行,并相同行只留下一行
语法
sort -c[u] [file]
file是文件名称
作用:检查数据是否有序
-c(check,检查):不排序,只检查
-cu:检查顺序和重复行
sort -c test sort: test:6: disorder: d
比如我对test文件排序,如果test无序,则会出现类似上面的log
sort: test:表示对test排序,后面的6表示第六行的时候顺序就不对了,第六行为d
区域设置(locale)与排序
sort的结果是和locale设置有关的
如果我们要对A,a,C,c,B,b排序,那么有两种常见结果
第一种为:A,B,C,a,b,c
第二种为:a,A,b,B,c,C
第一种以ASCII表的顺序排列(关于ASCII表请见文章末尾),需要记住的顺序:制表符、空格、数字、大写字母、小写字母。称为C区域或者POSIX区域
第二种则以locale为美国英语(en_US)排序(除了排序不同,其余都相同)
en_US和C的排列结果区别很大,自行查表吧
注:比如,如果使用rm [A-Z]*,那么结果是和排序有关的。如果locale=C,那么结果就是删除了大写字母开头的文件;如果locale=en_US,那么就是删除了除了以小写a开头的所有以英文字母开头的文件。
locale -a:查看系统支持的区域
环境变量
LC_COLLATE:指定排序方式
export LC_COLLATE=C
uniq
语法
uniq [-cdu] [infile [outfile]]
uniq的输入必须是有序的(如果是无序的,也不会提示错误)
infile是输入的文件的名称
outfile是输出的文件的名称
作用:消除重复行;选取重复行;选取唯一行;统计重复行数量。
-c:统计重复行
-d:只查看重复行
-u:只查看唯一行
uniq data:重复行只留一行
uniq data newdata:将结果输出到newdata中
uniq -du data:无输出
(上面的data一定要有序)
取两个文件行的交集
sort file1 file2 | uniq -d
join
语法
join [-i] [-a1|-v1] [-a2|-v2] [-1 field1] [-2 field2] file1 file2
field1和field2是引用特定字段的数字
file1和file2是包含有序数据的文件的名称
join像是数据库中的联合查询(当然,也不是那么智能,两个文件内容都需要有序)
假设我们有这样两个文件name和age,其中name文件中有每个人的id和name,age文件中有每个人的id和age。
name | age | ||||||||||||||||||||
|
|
默认情况下,join假定各个字段之间用空白符分隔,假定联接字段是每个文件的第一个字段
join name age 1 a 14 2 b 18 3 c 54 5 e 26 4 d 45
结果看上去还不错
但是数据源肯定不会总是这么完美,如果name中,只有id=1,3,5,而age中,只有id=1,2,3,4,那情况会是如何呢
join name age 1 a 14 3 c 54
join会找出他们公共部分(类似于inner join)
有了inner join大家肯定也会想,left join、right join、full join
总结下对应关系
left join:join -a1 name age
right join:join -a2 name age
full join:join -a1 -a2 name age
inner join:join name age
这里-a中的a表示all
-v(reverse,相反):-v1,只输出第一个文件中的不匹配行
-i:忽略大小写
-1 +字段编号:指定第一个文件的联接字段
-2 +字段编号:指定第二个文件的联接字段
join -1 2 -2 3 file1 file2(以file1的第二个字段和file2的第3个字段做连接)
(注意:join的结果与环境变量LC_COLLATE值有关)
tsort
语法
tsort [file]
作用:由偏序建立全序(只要偏序中没有圈)
简化一下书中的例子给予说明
今天周末,宅男A快要下班了,正计划晚上的安排,于是它列举了一些回家要做的事情,并且有一定的顺序
烧水要在泡面之前
扫地要在擦地之前
看片要在睡觉之前
泡面要在吃饭之前
吃饭要在看片之前
擦地要在吃饭之前
睡觉要在做梦之前
吃饭要在睡觉之前
哥们写好了,保存到一个叫todo的文件中格式为:
烧水 泡面
扫地 擦地
看片 睡觉
泡面 吃饭
吃饭 看片
擦地 吃饭
睡觉 做梦
吃饭 睡觉
有个妞问宅男A:“你今晚什么安排阿?”,哥们想了想,觉得不能把文件给姑娘让人家自己分析啊,于是哥们决定使用tsort!
tsort todo 扫地 烧水 擦地 泡面 吃饭 看片 睡觉 做梦
然后…………………………
tsort就是干这个用的,帮你缕清关系,然后排序。
strings
语法
strings [-length] [file...]
length是要显示的字符串的最小长度
file是文件名称,通常是一个路径名
默认情况下,strings只抽取至少有4个字符串长的字符串
作用:显示可执行文件中的字符串
名词解释
联接:当基于匹配的字段组合两组数据时,我们称之为联接(名称来自数据库理论)
联接字段(join field):用来匹配的具体字段称为联接字段
DAG(directed acyclic graph):有向无环图(不明白含义的同学请参看图论书籍)
ASCII(中文维基百科)
ASCII(英文维基百科)
转贴请保留以下链接
本人blog地址
发表评论
-
Linux书籍笔记目录
2013-12-12 10:53 0内建命令 命令 描述 章节 页码 章节 ... -
《Unix & Linux 大学教程》 - 附录F
2012-11-15 22:15 2598学习笔记,内容基础,适合初学者。 阅读之前,请务必 ... -
《Unix & Linux 大学教程》 - 第二十六章(二) 学习笔记
2012-11-13 23:26 3281学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第二十六章(一) 学习笔记
2012-11-07 11:15 2415学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第二十五章 学习笔记
2012-10-31 16:22 2822学习笔记,内容基础,适合初学者。 阅读之前,请务必 ... -
《Unix & Linux 大学教程》 - 第二十四章 学习笔记
2012-10-25 16:34 2605学习笔记,内容基础,适合初学者。 阅读之前,请 ... -
《Unix & Linux 大学教程》 - 第二十三章 学习笔记
2012-10-23 13:31 2001学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第二十二章(三) 学习笔记
2012-10-19 18:54 2192学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第二十二章(二) 学习笔记
2012-10-18 14:43 1754学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第二十二章(一) 学习笔记
2012-10-09 17:30 2636学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第二十一章 学习笔记
2012-09-24 16:30 2532学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第十九章(二)、第二十章 学习笔记
2012-09-17 18:48 2660学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第十八章 学习笔记
2012-08-22 15:40 2487学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第十六、十七章 学习笔记
2012-08-21 10:57 2921学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第十四、十五章 学习笔记
2012-08-17 14:34 3372学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第十三章 学习笔记
2012-08-14 11:43 4605学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第十一、十二章 学习笔记
2012-08-08 18:24 4151学习笔记,内容基础,适合初学者。 阅读之 ... -
《Unix & Linux 大学教程》 - 第九、十章 学习笔记
2012-08-07 15:07 2448学习笔记,内容基础,适合初学者。 阅读之前, ... -
《Unix & Linux 大学教程》 - 第七、八章 学习笔记
2012-08-06 17:16 3049学习笔记,内容基础,适合初学者。 阅读之前,请务 ... -
《Unix & Linux 大学教程》 - 第五、六章 学习笔记
2012-08-03 13:52 3599学习笔记,内容基础,适合初学者。 阅读之前,请务 ...
相关推荐
Linux,全称GNU/Linux,是一种基于 Unix 的自由及开放源代码的操作系统,其内核由林纳斯·托瓦兹在1991年首次发布。Linux操作系统被广泛应用于服务器、超级计算机、移动设备(如Android手机)以及家用电脑等各种硬件...
Linux学习笔记概述 Linux是一种自由和开放源代码的操作系统,其设计目标是提供一个轻量级、高效且安全的计算平台。Linux系统采用类UNIX目录结构,每个目录都有特定的功能和用途。以下是对Linux主要目录及其内容的...
### Linux系统学习笔记 #### 一、Linux系统Shell介绍 1. **Linux系统Shell类型**:Linux系统提供了多种Shell供用户选择,常见的包括Bourne shell (`sh`), C shell (`csh`), Korn shell (`ksh`)等。其中,`sh`是Unix...
集合了 所有的 Unix命令大全 登陆服务器时输入 公帐号 openlab-open123 telnet 192.168.0.23 自己帐号 sd08077-you0 ftp工具 192.168.0.202 tools-toolss 老师测评网址 http://172.16.0.198:8080/poll/ 各个 ...
- 第一部分的第二个至第十个字符分为三个三元组(triplet),分别表示文件属主、组用户和其他用户的权限。 - 第二部分表示文件的硬链接数目。 - 第三部分表示文件属主。 - 第四部分表示文件属主所在的默认组。 - 第...
- **Unix手册页**:介绍如何使用`man`命令查询Unix/Linux系统中的命令、函数等的文档,是学习Unix编程的重要资料来源。 - **系统调用与库函数**:系统调用是应用程序与操作系统内核之间的接口,库函数则是对系统调用...
以下是对"第11章 Linux操作系统基础"的主要知识点的详细阐述。 一、Linux操作系统简介 Linux是基于Unix的操作系统,由林纳斯·托瓦兹于1991年创建。它的内核是开源的,允许全球开发者对其进行修改和优化。Linux系统...
通过“嵌入式Linux入门笔记”,学习者将能了解嵌入式系统的基础概念,熟悉Linux内核、设备驱动、Bootloader的工作原理,掌握构建和调试嵌入式系统的技能,为成为一名合格的嵌入式Linux开发者打下坚实基础。
#### 第一章:服务器硬件的那些事儿 ##### 计算机的组成及分类 - **组成部分**:计算机由CPU、内存、硬盘、主板、网卡和输入输出设备等核心部件组成。 - **决定因素**:计算机性能好坏通常由CPU、内存和硬盘的规格...
### Shell脚本编程知识点概述 #### 一、预备知识与基本概念 在开始Shell脚本文档的学习之前,首先需要理解Shell...以上就是文档《总结搜集的shell脚本学习笔记(完结篇)》中所涵盖的主要知识点,希望对你有所帮助。
Linux操作系统是开源的类Unix系统,广泛应用于服务器、嵌入式设备和桌面环境中。了解Linux的基础知识,特别是其目录结构和命令行操作,对于软件开发人员来说至关重要。 首先,让我们来详细了解一下Linux的目录结构...
Linux 101考试模块化培训笔记是为Linux专业人士协会(LPI)的LPI 101考试准备的,尤其针对考试的第2版目标。这本培训笔记由Andrew McGill编写,属于Leading Edge Business Solutions公司的Linux培训计划的一部分。该...
《sed 与 awk(第二版)》学习笔记 在IT领域,sed和awk是两种强大的文本处理工具,尤其在Linux和Unix系统中被广泛使用。它们对于数据处理、日志分析、文本转换等方面有着不可忽视的作用。这份笔记旨在帮助读者理解...
C ++入门手册第五版笔记与知识点整合 一.C ++基础知识 二。函数 三。类 四.IO库 ##五。顺序容器 六。泛型编程 七。关联容器 八。动态内存 九。拷贝控制 十。重载运算与类型转换 十一。面向对象程序设计 十二。模板...
它支持多种操作系统,如Windows、Linux、Unix等,并具有高性能、高可靠性、易于使用的特点。 二、数据库与数据表 1. 数据库(Database):存储数据的容器,如student_db。 2. 表(Table):数据库中的数据结构,如...