小编给大家分享一下linux中正则表达式有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1、辅助信息
1.1、文件格式
在Linux上工作,是非常非常排斥二进制这种格式的,几乎什么都是可以读写的文本内容。大多数命令生成的结果,也都是文本文件。这些文件有一些特点,通常列与列都是通过空格或者
[root@localhost ~]# lsmem RANGE SIZE STATE REMOVABLE BLOCK 0x0000000000000000-0x0000000007ffffff 128M online no 0 0x0000000008000000-0x000000000fffffff 128M online yes 1 0x0000000010000000-0x0000000017ffffff 128M online no 2 0x0000000018000000-0x0000000027ffffff 256M online yes 3-4 0x0000000028000000-0x000000004fffffff 640M online no 5-9 0x0000000050000000-0x000000005fffffff 256M online yes 10-11 0x0000000060000000-0x000000007fffffff 512M online no 12-15 Memory block size: 128M Total online memory: 2G Total offline memory: 0B
有一大批针对于行操作的命令,同样有一批针对于列操作的命令。然后,有两个集大成者,叫做sed、awk。由于这两个命令的内容非常多,我们将其列为单独的章节。
1.2、帮助信息
通常linux命令都十分简单,但是有些还是有些复杂度的。比如find,ps这种命令,如果要照顾到所有的场合,可能需要非常巨大的篇幅。但是,万一用到这种偏门的场合怎么办?
全面了解一下是非常有必要的,以便在使用的时候能够唤起记忆中最浅显的印象。然后剩下的,就可以交给类似于man的这种命令了。Linux上的每一个命令,都会有配套的帮助文件,这远比网络上那些转来转去的信息,正确的多。
正式介绍一下下面的两个命令:
man 用来显示某个命令的文档信息。比如:man ls
info 你可以认为和man是一样的,虽然有一些能够互补的内容。它们会在内容中进行提示的
--help 很多命令通过参数--help提供非常简短的帮助信息。这通常是最有用最快捷的用例展示。如果你根本就记不住一个非常拗口的单词,那就找找这些地方吧
注意:这些帮助信息,仅集中在命令的作用域本身。对于它的组合使用场景,并没有过多信息。也就是说,它教会了你怎么用,但并没有告诉你用它能够来做什么。
这些帮助命令,一般会通过高亮关键字,增加阅读的体验。但我们可以更近一步,把帮助文件变成彩色的。在root用户下,执行下面的命令。然后,重新登录虚拟机。
cat >> ~/.bashrc <<EOF function man() { env \\ LESS_TERMCAP_mb=\$(printf "\e[1;31m") \\ LESS_TERMCAP_md=\$(printf "\e[1;31m") \\ LESS_TERMCAP_me=\$(printf "\e[0m") \\ LESS_TERMCAP_se=\$(printf "\e[0m") \\ LESS_TERMCAP_so=\$(printf "\e[1;44;33m") \\ LESS_TERMCAP_ue=\$(printf "\e[0m") \\ LESS_TERMCAP_us=\$(printf "\e[1;32m") \\ man "\$@"} EOF
再次执行man命令,就可以看到彩色的信息了。
1.3、TAB补全
现在,在终端里,输入ca,然后快速按2次
[root@localhost ~]# ca cacertdir_rehash cache_dump cache_repair cache_writeback ca-legacy capsh case catchsegv cache_check cache_metadata_size cache_restore cal caller captoinfo cat catman
如果你对某个命令,只有模糊的印象,只记得前面的几个字母,这个功能是极好的,命令范围会一步步缩减。
2、正则表达式
为了开始下面的内容,我们首先介绍一下正则表达式。在前面的一些命令中,也可以使用这些正则表达式,比如less、grep等。
有些书籍,能够把正则表达式写成一本书,我们这里仅作简单的介绍,但足够用了。一般的,正则表达式能用在匹配上,还能够把匹配的内容拿来做二次利用。关于后者,我们在sed命令中介绍。
标志 | 意义 | |
---|---|---|
^ | 行首 | |
$ | 行尾 | |
. | 任意单个字符 | |
* | 匹配0个或者多个前面的字符 | |
+ | 1个或者多个匹配 | |
? | 0个或者1个匹配 | |
{m} | 前面的匹配重复m次 | |
{m,n} | 前面的匹配重复m到n次 | |
[] | 匹配一个指定范围内的字符 | |
[^] | 匹配指定范围外的任意单个字符 | |
\ | 转义字符 | |
[0-9] | 匹配括号中的任何一个字符,or的作用 | |
` | ` | or,或者 |
\b | 匹配一个单词。比如\blucky\b 只匹配单词lucky |
使用下面的命令创建一个文件,我们练习一下grep命令加上E参数后的正则表现。
cat > 996 <<EOF 996: 996 is a funcking thing . which make woman as man , man as ass . we all on the bus , bus bus on the way . 996 way to icu. icuuuuuu...... The greedy green boss rides on the pity programmer EOF
在终端执行下面命令,注意高亮的部分即为匹配到的字符串。
# 匹配996开头的行 [root@localhost ~]# cat 996 | grep -E ^996 996: 996 is a funcking thing . which make woman as man , man as ass . # 匹配996结尾的行 [root@localhost ~]# cat 996 | grep -E 996$ we all on the bus , bus bus on the way . 996 # 匹配到icu和icuuuuuu [root@localhost ~]# cat 996 | grep -E icu+ way to icu. icuuuuuu...... # 再次匹配到996 [root@localhost ~]# cat 996 | grep -E [0-9] 996: 996 is a funcking thing . which make woman as man , man as ass . we all on the bus , bus bus on the way . 996 [root@localhost ~]# cat 996 | grep -E ^[\^0-9] we all on the bus , bus bus on the way . 996 way to icu. icuuuuuu...... The greedy green boss rides on the pity programmer # 匹配所有不包含996的行,良心命令,泪奔 [root@localhost ~]# cat 996 | grep -E -v [0-9]{3} way to icu. icuuuuuu...... The greedy green boss rides on the pity programmer # 匹配boss和icu [root@localhost ~]# cat 996 | grep -E boss\|icu way to icu. icuuuuuu...... The greedy green boss rides on the pity programmer # 匹配所有行 [root@localhost ~]# cat 996 | grep -E . 996: 996 is a funcking thing . which make woman as man , man as ass . we all on the bus , bus bus on the way . 996 way to icu. icuuuuuu...... The greedy green boss rides on the pity programmer
正则表达式非常的重要,在一些sed脚本中,awk脚本中,甚至是vim编辑器中,都会简化你的操作。以上内容应该熟记,达到不需要查找文档的地步。
以上是“linux中正则表达式有什么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。