《IC设计--Linux系统命令系列--ls grep head sed awk高级命令综合应用举例》ls head等命令在IC设计中经常用到,这些命令比较简单。除此之外,grep sed awk在IC设计中也经常用到,比之前的命令
高级一点。本推文将通过一个例子来简单讲解一下这些命令的功能和用法。如果能熟练运用这些命令,将大大提高你的工作效率。
目标:获得某个路径下最新的
文件夹名称。
步骤:1、ls -ltF可以按照时间顺序列出文件以及文件夹,并显示其属性,如果是文件夹则后边有个"/"标志(除此之后ls -l出来的属性中如果含有d也可以过滤出文件夹,这个更加常用且更方便,不过这里用"/"结合sed命令来演示): 命令:ls -ltF/xxx/scripts/ndr_scripts结果:total 712-rw-rw-r--1 hqiao hardware 25029 Sep 14 01:51Makefile_v0.2-rw-rw-r--1 hqiao hardware 5497 Sep 14 01:48 tmp.log-rw-rw-r--1 hqiao hardware 25088 Sep 14 01:20 Makefile_v0.1.3-rw-rw-r--1 hqiao hardware 23357 Sep 12 02:49 Makefile_v0.1.2-rw-rw-r--1 hqiao hardware 23214 Sep 10 20:23 Makefile_v0.1.1drwxrwxr-x3 hqiao hardware 4096 Sep 10 20:20 ndr_pin_def_part/drwxrwxr-x3 hqiao hardware 4096 Sep 5 22:51 ndr_pin_def_chip/drwxrwxr-x2 hqiao hardware 4096 Sep 5 22:50 check_def_gv/drwxrwxr-x3 hqiao hardware 4096 Sep 5 22:40 ndr2/drwxrwxr-x3 hqiao hardware 4096 Sep 3 20:29 wide/-rw-rw-r--1 hqiao hardware 21910 Sep 3 02:22 Makefile_v0.1.0-rw-rw-r--1 hqiao hardware 21673 Aug 29 18:45 Makefile_v0.0.8-rw-rw-r--1 hqiao hardware 21673 Aug 29 04:33 Makefile...可以看到,最新的文件排列在最上方,这也是我们需要的,后边会用head来获取该文件夹名称;ls命令功能:用于显示指定工作目录下的内容(列出当前/指定工作目录所含文件及子目录)用到的option介绍:-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出-t 将文件依建立时间之先后次序列出-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"2、用grep过滤掉文件,在列表中只出现文件夹(也就是只筛选出以"/"结尾的内容):命令:ls -ltF/xxx/scripts/ndr_scripts | grep '/$'结果:drwxrwxr-x3 hqiao hardware 4096 Sep 10 20:20 ndr_pin_def_part/drwxrwxr-x3 hqiao hardware 4096 Sep 5 22:51 ndr_pin_def_chip/drwxrwxr-x2 hqiao hardware 4096 Sep 5 22:50 check_def_gv/drwxrwxr-x3 hqiao hardware 4096 Sep 5 22:40 ndr2/drwxrwxr-x3 hqiao hardware 4096 Sep 3 20:29 wide/可以看到结果中只剩下文件夹了,且最上方的时间是最新的。grep命令功能:用于查找文件里符合条件的字符串。3、接下来我们可以用head命令来获取第一行的结果:命令:ls -ltF/xxx/scripts/ndr_scripts | grep '/$' | head -n 1结果:drwxrwxr-x3 hqiao hardware 4096 Sep 10 20:20 ndr_pin_def_part/head命令功能:显示文件的开头至标准输出中(默认文件开头的前10行)格式:head[OPTION]... FILE...用到的option介绍:-n 显示文件的前n行4、其实我们只需要文件夹的名称,其他的属性信息并不需要,因此,我们可以用awk来获取第9列的文件夹名称:命令:ls -ltF/xxx/scripts/ndr_scripts | grep '/$' | head -n 1 | akw 'print $9'结果:ndr_pin_def_part/awk命令功能:通常用来格式化文本信息,处理过程:依次对每一行进行处理,然后输出用到的option介绍:print 是awk打印指定内容的主要命令$0 表示整个当前行$9 每行第9个字段5、完成,可是文件夹名称末尾有个多余的"/",我们可以继续用sed将其删除:最终命令:ls -ltF/xxx/scripts/ndr_scripts | grep '/$' | head -n 1 | awk '{print $9}' | sed's|/$||g'结果:ndr_pin_def_partsed命令功能:利用script来编辑、处理文本文件。这样,一行命令运用了多个知识,达到了想要的结果。这么做的意义是什么呢?我们还可以在脚本中加上正则匹配,这样一旦脚本写成,无论设计有多少个版本更新,我们的脚本总能够得到最新的项目路径。我们还可以将该语句用到perl脚本中,将其定义成一个变量,后边的一些操作都可以对这个路径进行,省去了编辑脚本更改路径的烦恼,一劳永逸。之后有空会详细介绍一下这些高级命令在IC设计中的应用。谢谢您的支持。如果喜欢本公众号也请多多分享哟,谢谢您的关注