man grep得到下列信息

grep命令的语法:

find命令和grep命令的区别

find命令是在文件名称或目录名称里找指定的字符串。一般,find命令的输出结果是找到的文件名或目录名。

grep命令是在文件内容或stdin里找指定的字符串。然而,grep的输出结果却不一定是找到的字符串,而是根据不同的命令选项有不同的输出,例如,正常输出模式时会输出含指定字符串的全部行,加了-l命令选项会输出含指定字符串的全部文件,等等。

正常输出模式: 输出含指定字符串的全部行

root@hgdm:~/examples# cat grep_data.txt 孤舟蓑笠翁,独钓寒江雪。 花间一壶酒,独酌无相亲。 细草微风岸,危樯独夜舟。 落叶他乡树,寒灯独夜人。 海内存知己,天涯若比邻。 烽火连三月,家书抵万金。 红豆生南国,春来发几枝。 # 输出含独字的全部行 root@hgdm:~/examples# grep '独' grep_data.txt 孤舟蓑笠翁,独钓寒江雪。 花间一壶酒,独酌无相亲。 细草微风岸,危樯独夜舟。 落叶他乡树,寒灯独夜人。

linux利用grep查找内容并创建文件(grep命令的使用场景)(1)

grep常规输出模式

选项-v: 输出不含指定字符串的全部行

root@hgdm:~/examples# cat grep_data.txt 孤舟蓑笠翁,独钓寒江雪。 花间一壶酒,独酌无相亲。 细草微风岸,危樯独夜舟。 落叶他乡树,寒灯独夜人。 海内存知己,天涯若比邻。 烽火连三月,家书抵万金。 红豆生南国,春来发几枝。 # 反向操作,输出不含独字的全部行 root@hgdm:~/examples# grep -v '独' grep_data.txt 海内存知己,天涯若比邻。 烽火连三月,家书抵万金。 红豆生南国,春来发几枝。

linux利用grep查找内容并创建文件(grep命令的使用场景)(2)

grep -v反选操作

选项-c: 输出有几行

root@hgdm:~/examples# cat grep_data.txt 孤舟蓑笠翁,独钓寒江雪。 花间一壶酒,独酌无相亲。 细草微风岸,危樯独夜舟。 落叶他乡树,寒灯独夜人。 海内存知己,天涯若比邻。 烽火连三月,家书抵万金。 红豆生南国,春来发几枝。 # 含独字的行总共有4行,所以输出4 root@hgdm:~/examples# grep -c '独' -n grep_data.txt 4

linux利用grep查找内容并创建文件(grep命令的使用场景)(3)

grep -c 输出行数

选项-l: 输出内容含指定字符串的全部文件

root@hgdm:~/examples/temp# cat data1.txt 孤舟蓑笠翁,独钓寒江雪。 花间一壶酒,独酌无相亲。 root@hgdm:~/examples/temp# cat data2.txt 细草微风岸,危樯独夜舟。 落叶他乡树,寒灯独夜人。 # 找到当前目录下含独字的全部文件的名称 root@hgdm:~/examples/temp# grep -lR '独' ./ ./data1.txt ./data2.txt root@hgdm:~/examples/temp# grep -lR -Z '独' ./ | xargs -0 cat 孤舟蓑笠翁,独钓寒江雪。 花间一壶酒,独酌无相亲。 细草微风岸,危樯独夜舟。 落叶他乡树,寒灯独夜人。

linux利用grep查找内容并创建文件(grep命令的使用场景)(4)

grep -lR -Z

选项-o: 仅仅输出指定的字符串

root@hgdm:~/examples# cat grep_data.txt 孤舟蓑笠翁,独钓寒江雪。 花间一壶酒,独酌无相亲。 细草微风岸,危樯独夜舟。 落叶他乡树,寒灯独夜人。 海内存知己,天涯若比邻。 烽火连三月,家书抵万金。 红豆生南国,春来发几枝。 # 只输出文件中的全部独字,而不输出包含独字的行 root@hgdm:~/examples# grep -o '独' grep_data.txt 独 独 独 独

linux利用grep查找内容并创建文件(grep命令的使用场景)(5)

grep -o

当grep的参数是文件和stdin组合时

root@hgdm:~/examples# echo -e '独在异乡为异客\n独善其身' 独在异乡为异客 独善其身 root@hgdm:~/examples# cat grep_data.txt 孤舟蓑笠翁,独钓寒江雪。 花间一壶酒,独酌无相亲。 细草微风岸,危樯独夜舟。 落叶他乡树,寒灯独夜人。 海内存知己,天涯若比邻。 烽火连三月,家书抵万金。 红豆生南国,春来发几枝。 root@hgdm:~/examples# echo -e '独在异乡为异客\n独善其身' | grep '独' - grep_data.txt (standard input):独在异乡为异客 (standard input):独善其身 grep_data.txt:孤舟蓑笠翁,独钓寒江雪。 grep_data.txt:花间一壶酒,独酌无相亲。 grep_data.txt:细草微风岸,危樯独夜舟。 grep_data.txt:落叶他乡树,寒灯独夜人。

linux利用grep查找内容并创建文件(grep命令的使用场景)(6)

当grep的参数是文件和stdin组合时

当需找两个或两个以上的指定字符串时

上面的例子,都是在文件或stdin里查找一个指定字符串,有时候,需要在文件或stdin里查找两个或两个以上指定字符串。

语法为: grep -e "待找字符串1" -e "待找字符串2" -e "待找字符串3"

root@hgdm:~/ls_data# cat file1.txt 孤舟蓑笠翁,独钓寒江雪。 海内存知己,天涯若比邻。 root@hgdm:~/ls_data# cat file2.txt 花间一壶酒,独酌无相亲。 烽火连三月,家书抵万金。 root@hgdm:~/ls_data# cat file3.txt 细草微风岸,危樯独夜舟。 野旷天低树,江清月近人。 root@hgdm:~/ls_data# grep -e '孤舟' -e '一壶酒' -e '野旷' -e '天涯' file1.txt file2.txt file3.txt file1.txt:孤舟蓑笠翁,独钓寒江雪。 file1.txt:海内存知己,天涯若比邻。 file2.txt:花间一壶酒,独酌无相亲。 file3.txt:野旷天低树,江清月近人。

linux利用grep查找内容并创建文件(grep命令的使用场景)(7)

grep -e指定多个待找字符串

当待找的指定字符串是一个正则表达式时

当需要完全使用正则表达式时,使用grep -E或egrep命令。

root@hgdm:~/ls_data# echo -e "孤舟蓑笠翁\n独钓寒江雪\n2022 The best" 孤舟蓑笠翁 独钓寒江雪 2022 The best root@hgdm:~/ls_data# echo -e "孤舟蓑笠翁\n独钓寒江雪\n2022 The best" | grep -E '[0-9] ' 2022 The best root@hgdm:~/ls_data# echo -e "孤舟蓑笠翁\n独钓寒江雪\n2022 The best" | egrep '[0-9] ' 2022 The best

linux利用grep查找内容并创建文件(grep命令的使用场景)(8)

grep -E和egrep

当grep的参数是含有通配符*的文件名时

root@hgdm:~/ls_data# ls dir1 dir2 dir3 file1.txt file2.txt file3.txt root@hgdm:~/ls_data# cat file* 孤舟蓑笠翁,独钓寒江雪。 海内存知己,天涯若比邻。 花间一壶酒,独酌无相亲。 烽火连三月,家书抵万金。 细草微风岸,危樯独夜舟。 野旷天低树,江清月近人。 # *file*匹配到file1.txt file2.txt file3.txt root@hgdm:~/ls_data# grep '独' *file* file1.txt:孤舟蓑笠翁,独钓寒江雪。 file2.txt:花间一壶酒,独酌无相亲。 file3.txt:细草微风岸,危樯独夜舟。

linux利用grep查找内容并创建文件(grep命令的使用场景)(9)

*file*匹配到file1.txt file2.txt file3.txt

如何让ls命令只列出目录或文件

# 只列出目录 ls -l | grep '^d' # 只列出文件 ls -l | grep '^-'

上述命令的执行结果如下

root@hgdm:~/ls_data# ls -l total 12 drwxr-xr-x 2 root root 4096 Apr 4 14:10 dir1 drwxr-xr-x 2 root root 4096 Apr 4 14:10 dir2 drwxr-xr-x 2 root root 4096 Apr 4 14:10 dir3 -rw-r--r-- 1 root root 0 Apr 4 14:09 file1.txt -rw-r--r-- 1 root root 0 Apr 4 14:09 file2.txt -rw-r--r-- 1 root root 0 Apr 4 14:09 file3.txt root@hgdm:~/ls_data# ls -l | grep '^d' drwxr-xr-x 2 root root 4096 Apr 4 14:10 dir1 drwxr-xr-x 2 root root 4096 Apr 4 14:10 dir2 drwxr-xr-x 2 root root 4096 Apr 4 14:10 dir3 root@hgdm:~/ls_data# ls -l | grep '^-' -rw-r--r-- 1 root root 0 Apr 4 14:09 file1.txt -rw-r--r-- 1 root root 0 Apr 4 14:09 file2.txt -rw-r--r-- 1 root root 0 Apr 4 14:09 file3.txt

linux利用grep查找内容并创建文件(grep命令的使用场景)(10)

ls和grep组合只列出目录或文件

,