大家写简历技术栈时,都觉得越多越好,其中一条,熟悉Linux下常用命令?其实开发中Linux不是必备考点,除了运维,真正用的多的仅仅cd ls mkdir等,但当面试官问到上面命令时,是不是就傻眼了。
面试中最忌讳的就是简历上写了,但答不出来,出现这样的情况基本面试就凉凉了,如果实在要写呢,下面就把答案好好记一记^-^
使用 grep 和 sort 命令
先复习一下grep命令
grep 命令是 Linux 中用于在文件中搜索指定模式的强大工具。它的基本语法如下:
grep [options] pattern [file...]
- pattern:要搜索的模式,可以是文本字符串或正则表达式。
- file:要在其中搜索模式的文件列表。如果未提供文件名,则 grep 将从标准输入中读取数据。
一些常用选项:
- -i:忽略大小写。
- -r 或 -R:递归搜索指定目录及其子目录中的文件。
- -w:仅匹配整个单词,而不是部分匹配。
- -n:显示匹配行的行号。
- -v:反转匹配,显示不匹配的行。
- -c:仅显示匹配的行数,而不是匹配的行内容。
- -l:仅显示包含匹配的文件名,而不是匹配的行内容。
- -o:仅显示匹配的文本,而不是整行。
示例用法:
在文件中搜索特定字符串:
grep "pattern" filename.txt
搜索多个文件中的模式:
grep "pattern" file1.txt file2.txt
递归搜索目录中的文件:
grep -r "pattern" /path/to/directory
忽略大小写进行搜索:
grep -i "pattern" filename.txt
显示匹配的行号:
grep -n "pattern" filename.txt
仅显示匹配的文本,而不是整行:
grep -o "pattern" filename.txt
反转匹配,显示不匹配的行:
grep -v "pattern" filename.txt
回到正题,提取一个文件中重复文本的操作
使用 grep 提取文本:首先,使用 grep 命令从文件中提取文本。
grep -oE '\w+' filename.txt | sort | uniq -c | sort -nr
- grep -oE '\w+' filename.txt:该命令提取 filename.txt 文件中的所有单词,并将其输出到标准输出。
- sort:对提取的单词进行排序,以便相同的单词相邻。
- uniq -c:统计相邻重复的单词,并显示每个单词重复的次数。
- sort -nr:按照重复次数(降序)对单词进行排序,这样最常出现的单词将出现在列表的顶部。
示例:
假设 filename.txt 包含以下文本内容:
hello world
hello universe
hello world
universe is vast
执行以下命令:
grep -oE '\w+' filename.txt | sort | uniq -c | sort -nr输出将会是:
2 hello
2 world
1 universe
1 is
1 vast这表示 hello 和 world 分别出现了 2 次,而 universe、is 和 vast 分别出现了 1 次。