面试题答案
一键面试-
*
和?
的区别:*
:通配符*
匹配零个或多个任意字符。它是一个非常宽泛的匹配,几乎可以匹配任何字符组合(包括空字符串)。?
:通配符?
只匹配单个任意字符。
-
使用场景示例:
*
示例:假设当前目录下有文件file1.txt
、file2.txt
、file_a.txt
、file_b.txt
,要删除所有.txt
文件,可以使用rm *.txt
,这里*
匹配了文件名中除了.txt
之外的所有部分。?
示例:如果当前目录下有文件file1.txt
、file2.txt
、file_a.txt
、file_b.txt
,要列出文件名中第二个字符为任意字符,且文件名以file
开头,以.txt
结尾的文件,可以使用ls file?.txt
,它会匹配file1.txt
和file2.txt
,但不会匹配file_a.txt
和file_b.txt
。
-
使用正则表达式匹配出文本文件中所有以数字开头,后跟字母的字符串的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
是要搜索的文本文件名。