MST

星途 面试题库

面试题:Bash通配符与正则表达式基础应用

请阐述Bash通配符`*`和`?`的区别,并各举一个使用场景示例。同时,使用正则表达式匹配出文本文件中所有以数字开头,后跟字母的字符串,假设文本文件名为test.txt,给出Bash命令。
49.8万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
  1. *?的区别

    • *:通配符*匹配零个或多个任意字符。它是一个非常宽泛的匹配,几乎可以匹配任何字符组合(包括空字符串)。
    • ?:通配符?只匹配单个任意字符。
  2. 使用场景示例

    • *示例:假设当前目录下有文件file1.txtfile2.txtfile_a.txtfile_b.txt,要删除所有.txt文件,可以使用rm *.txt,这里*匹配了文件名中除了.txt之外的所有部分。
    • ?示例:如果当前目录下有文件file1.txtfile2.txtfile_a.txtfile_b.txt,要列出文件名中第二个字符为任意字符,且文件名以file开头,以.txt结尾的文件,可以使用ls file?.txt,它会匹配file1.txtfile2.txt,但不会匹配file_a.txtfile_b.txt
  3. 使用正则表达式匹配出文本文件中所有以数字开头,后跟字母的字符串的Bash命令

grep -oE '^[0-9][a-zA-Z]+' test.txt

解释:

  • grep:文本搜索工具。
  • -o:只输出匹配的部分,而不是整行。
  • -E:使用扩展正则表达式。
  • ^[0-9][a-zA-Z]+:正则表达式,^表示行首,[0-9]匹配一个数字,[a-zA-Z]+匹配一个或多个字母。test.txt是要搜索的文本文件名。