自学笔记——shell(查找和分类)

    这一章看的比较慢,发现正则表达式原来还是很深奥的有木有,中间补习了一些正则表达式的内容,还是决定先把shell大致学过一遍之后再根据需要去学习正则表达式。


1.传统的三种查找文本:grep,egrep(使用扩展正则表达式,耗费更多资源),fgrep(匹配固定字符串而非正则表达式,能匹配多个字符串)。现在只推荐用grep(已用-E和-F整合后两者)。grep的-q表示如果匹配则成功离开不将结果写入标准输出,场与-s(不显示错误信息)并用。


2.正则表达式由一般字符与特殊字符(常称为元字符metacharacter)建立。meta字符包括\.*^$[]+?|()等。

3.范围表达式在UNIX里称为字符集(方括号表达式),根据方括号里符号不同有字符集[:关键字:]表示英文字母字符、控制字符等;排序符号[. .]根据locale有不同含义;等价字符集[= =]所列的应视为等值的一组字符。

4.匹配单个字符:直接匹配一般字符、\表示转义字符、.匹配任意字符、[字符列表]匹配(^放在字首表示取反,即匹配出不包括在字符列表的字符。可用-表示范围比如0-9)

5.方括号表达式中,所有其他meta字符都会失去特殊含义。要让]或-进入集合,把它们放到列表的最前面。要使它们同时进入集合,把]放第一个,-放最后一个。

6.后向引用指的是匹配于正则表达式匹配的先前的部分,常用来查找连续重复出现的单词或字母以及匹配引号(如\(["']\).*\1无需担心是双引号还是单引号先找到)。步骤:先将子表达式包围在\(与\)里,然后使用\digit,digit可为1到9的数字,表示匹配于滴n个先前方括号内子表达式匹配成功的字符。

(可参考关于正则表达式的这篇文章:http://blog.sina.com.cn/s/blog_7546636b0101gxgn.html)


7.BRE单个表达式匹配多字符:常用修饰符*表示匹配0个或多个前面的单个字符。如ab*c可匹配ac、abc、abbbc等。区间表达式控制前面的字符连续重复几次即为匹配成功:\{n\}重现n次、\{n,\}重现至少n次、\{n,m\}重现n到m次。

8.锚点^限定在字符串起始处匹配,$限定在字符串结尾处匹配,同时使用表示匹配整个字符串(常用来匹配空字符串,grep -v显示不匹配的行可用来过滤空行)。

9.ERE匹配单个字符时awk命令里[]都需要转义。

10.ERE里没有后向引用\( \)即匹配左右括号,区间表达式用{}。

11.ERE中?匹配0个或一个前置正则表达式,+匹配1个或多个前置正则表达式。用|匹配多个字符(序列)。

12.ERE中^与$永远是meta字符,如ab^cd与ef$gh有效却无法匹配到任何东西。

13.最常见的扩展运算符\<与\>,分别匹配单词的开头与结尾,同时有则需同时满足在单词的开头和结尾。

14.一般在管道中间使用流编辑器sed执行替换操作,用s命令要求正则表达式寻找,用替代文替换匹配的文本。如:sed 's/:.*//' /etc/passwd | sort -u(删除第一个冒号之后的所有东西然后排序列表并删除重复部分)

15.sed中最常用/做定界符,但任何可显示的字符都能作为定界符(也可以是转义定界符),在处理文件名称时,通常都会以标点符号字符作为定界符(;:,等)

16.后向引用能使用在替代文本嗯中,以表示“从这里开始替换成匹配第n个圆括号里字表达式的文本”,后向引用最多可以达到9个。

17.&在替代文本里表示的意思是“从此点开始替代成匹配于正则表达式的整个文本”。

18.s命令里以g结尾表示的是替代文本取代正则表达式中每一个匹配的,否则只会取代第一个匹配的。结尾指定数字,则可指示第n个匹配出现才要被取代。

19.sed会一次打开命令行上的文件名,如果没有文件则使用标准输入。文件名“-”可用于表示标准输入。-n选项存在时,操作后不打印最后内容,若在脚本里使用p,则会打印该行。如:#n /<HTML>/p(关闭自动打印后,仅打印含<HTML>的这行)

20.sed的注释必须出现在单独的行里,因为它们是语法型命令。对sed而言,最后一行指的是输入数据的最后一行,即使是处理多个文件,sed也将它们视为一个长的输入流。

21.否定正则表达式:将命令应用于不匹配于特定模式的每一行。如:/used/!s/new/used/g 将没有used的每个行里所有的new改成used。

22.UNIX上常用空白和冒号作为分隔符。使用cut裁剪数据,使用join连接字段。

23.awk后经常接print语句,如需字段值,则用$+常数(为0时表示整条记录)。如:awk '{ print $2, $5 }'打印第二第五个字段。

24.awk的-v选项可设置OFS变量改变输出字段分隔字符。如awk -F: -v 'OFS=**' '{ print $1 $5 }' /etc/passwd。

25.awk的print语句会自动提供换行符,printf则必须使用\n自己提供。print的参数间用逗点隔开,否则将连接相邻的所有值。

26.BEGIN和END提供awk程序的起始与清除,常见于大型awk程序中。习惯上置于awk程序的开头和结尾。


跑了一周的面试。。租的房子这边网速也基本为零。。现在终于有时间更完这章了~~~

FPGA自学笔记——设计与验证JMB FPGA(可编程逻辑门阵列)是一种可编程的硬件平台,可以实现各种数字电路的设计与验证。本文将简要介绍使用FPGA自学设计与验证JMB(低功耗、高效能、集成度高的多媒体芯片)的过程。 首先,我们需要了解JMB的功能和特性。JMB是一种面向多媒体应用的芯片,具备低功耗、高效能和高集成度的优势。我们需要详细研究JMB的硬件架构和内部模块,包括处理器核、存储器模块、图像和音频处理模块等。 接下来,我们可以使用FPGA开发板来设计和验证JMB。首先,我们需要熟悉FPGA设计工具,例如Vivado或Quartus等。这些工具提供了图形化界面和硬件描述语言(HDL)等设计方法。我们可以使用HDL编写JMB的功能模块,并将其综合为FPGA可执行的位流文件。 在设计完成后,我们需要验证JMB的功能和性能。我们可以使用仿真工具(例如ModelSim或ISE Simulator)来模拟JMB在不同情况下的行为。通过设计测试程序并运行仿真,我们可以验证JMB的各个模块是否正确地工作,是否满足设计要求。 在验证完成后,我们可以将位流文件下载到FPGA开发板中进行智能芯片的物理实现和测试。通过与外部设备的连接以及相关测试程序的运行,我们可以验证JMB在实际硬件中的功能和性能。 总结起来,学习FPGA设计与验证JMB,我们需要熟悉JMB的硬件架构和内部模块,并使用FPGA开发工具进行设计与验证。通过仿真和物理实现测试,我们可以验证JMB的功能和性能。这些过程需要理论知识和实践经验的结合,希望这些笔记能够给你提供一些参考和指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值