都说Linux很重要,你会几个Linux命令?来看看这道面试题目。

2020-08-13 15:01:59 浏览数 (1)

作者丨五角钱的程序员 图丨pexels

今天继续讲解美团java一面面试题目,Linux怎么搜索文件中的字符串,并把这个字符串所在行和下面一行的内容写到另外一个文件中?多了解Linux操作系统基本的命令,以及运行相关等是程序员的基本功。

搜索文件中的字符串

如果你想在当前目录下 查找"chenyuan"字符串,可以这样:

代码语言:javascript复制
[hadoop@hadoop101 opt]$ grep -rn "chenyuan" *
代码语言:javascript复制
* : 表示当前目录所有文件,也可以是某个文件名
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写

下面是一些有意思的命令行参数:
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配'magic',而不是'magical'),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

这里还有些用于搜索的特殊符号:

创建三个文件:

代码语言:javascript复制
[hadoop@hadoop101 opt]$ sudo touch xl.txt

[hadoop@hadoop101 opt]$ sudo chown hadoop:hadoop ll.txt

写入:chenyuan

接下来按照相同的办法创建:ll.txt,lll.txt.分别写入:yuanic,yuan。

代码语言:javascript复制
< 和 > 分别标注单词的开始与结尾。
例如:
grep yuan* 会匹配 ‘chenyuan’、‘yuanic’、‘yuan’等,
grep '<yuan' * 匹配‘yuanic’和‘yuan’,但不是‘chenyuan’,
grep '<yuan>' 只匹配‘yuan’,而不是‘chenyuan’或‘yuanic’等其他的字符串。
'^':指匹配的字符串在行首,
'$':指匹配的字符串在行尾,
代码语言:javascript复制
[hadoop@hadoop101 opt]$ grep -rn yuan *
代码语言:javascript复制
[hadoop@hadoop101 opt]$ grep -rn '<yuan' *
代码语言:javascript复制
[hadoop@hadoop101 opt]$ grep -rn '<yuan>'

写到另一个文件中

修改xl.txt

代码语言:javascript复制
[hadoop@hadoop101 opt]$ vi xl.txt 

chenyuan
xl
lala

清空ll.txt

代码语言:javascript复制
[hadoop@hadoop101 opt]$ grep -i "chenyuan" -A 1 xl.txt | grep -v -e "--" >ll.txt

[hadoop@hadoop101 opt]$ cat ll.txt 

chenyuan
xl

grep 指令用于查找内容bai包du含指定的范本样式的文件,如果zhi发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。

END

0 人点赞