记录实验楼的"查找指定文件"比赛

目标

将 /etc 目录下所有内容中包含 shiyanlou 字符串的文件的完整路径都写入 /home/shiyanlou/output 文件中

/home/shiyanlou/output 文件中每一行包含一个文件,这个文件的内容中包含 shiyanlou字符串,不允许重复

查找文件并输出到output文件           $ sudo grep -rR "shiyanlou" /etc | cut -d ":" -f 1 | tee /home/shiyanlou/output

解析:  grep  找到含有执行字符串的文件

grep -rn "hello,world!" *

* : 表示当前目录所有文件,也可以是某个文件名

-r :是递归查找

-n :是显示行号

-R :查找所有文件包含子目录

-i :忽略大小写

cut字符串截取命令

-f  列号      #提取第几列(分隔符默认为\t)

-d  分隔符  #指定分隔符

cut -d  ":"  -f 1,3 /etc/passwd  #以:分割截取文件passwd文件的第1列和第三列

tee  读取标准输入的数据,并将其内容输出成文件。

-a或--append  附加到既有文件的后面,而非覆盖它.

-i-i或--ignore-interrupts  忽略中断信号

去除重复行

命令:$ sort ./output | uniq | tee output

先用sort命令 对文本排序(不相邻的重复行经过排序之后变成相邻的),uniq 命令可以直接去除相邻的重复行 然后输出文本.

uniq 命令参数说去除重复行明:

[zhangy@BlackGhost ~]$ uniq --help

用法:uniq [选项]... [文件]

从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。

不附加任何选项时匹配行将在首次出现处被合并。

长选项必须使用的参数对于短选项时也是必需使用的。

-c, --count              //在每行前加上表示相应行目出现次数的前缀编号

-d, --repeated          //只输出重复的行

-D, --all-repeated      //只输出重复的行,不过有几行输出几行

-f, --skip-fields=N     //-f 忽略的段数,-f 1 忽略第一段

-i, --ignore-case       //不区分大小写

-s, --skip-chars=N      //根-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符

-u, --unique            //去除重复的后,全部显示出来,根mysql的distinct功能上有点像

-z, --zero-terminated   end lines with 0 byte, not newline

-w, --check-chars=N      //对每行第N 个字符以后的内容不作对照

--help              //显示此帮助信息并退出

--version              //显示版本信息并退出

文章引用:实例详细说明linux下去除重复行命令uniqLinux查找含有某字符串的所有文件

Linux字符串截取和处理命令 cut、printf、awk、sed、sort、wc