Bootstrap

linux 查看文件/grep字符串匹配命令

cat

用于连接文件并打印到标准输出。可以用 cat 命令将多个文件合并成一个文件,也可以用它来查看单个文件的内容。常用的选项包括 -n(显示行号)和 -b(显示非空行号),例如 cat -n file.txt 可以显示文件的内容,并在每行开头显示行号。

cat -n file.txt //显示文件的内容,并在每行开头显示行号
cat file1.txt file2.txt //连接查看file1和file2文件内容
cat file1.txt file2.txt > merged.txt 
//连接查看file1和file2文件内容并重定向到merge.txt

more

用于分页显示文本文件的内容,每次显示一页,支持向下翻页、向上翻页、前进和退出等操作。常用的命令包括空格(向下翻页)回车键(向下滚动一行)q(退出)b或者上箭头(↑)键向上翻页

less

与 more 类似,也是用于分页显示文本文件的内容,但支持更多的操作和选项。常用的命令包括空格(向下翻页)、b(向上翻页)、g(跳到文件开头)、G(跳到文件结尾)、/(搜索文本)等。相比于 more,less 支持更多的操作,且可以进行反向搜索和高亮显示等功能。

grep

是一种用于在文本文件中搜索指定模式的 Linux 命令。grep 命令通常用于查找文件中包含某个字符串的行或者匹配某个正则表达式的行。它可以搜索一个或多个文件,也可以从标准输入中读取数据并进行搜索。

常用的 grep 选项包括:

  • -i:忽略大小写
  • -v:只显示不匹配的行
  • -n:显示匹配行的行号
  • -l:只显示包含匹配行的文件名
  • -c:只显示匹配行的计数
  • -r:递归搜索子目录中的文件
  • -E:使用扩展的正则表达式语法
  • -w:只匹配整个单词,而不是单词的一部分
  • -A:(after)显示匹配后几行
  • -B:(before)显示匹配前几行

用例

grep [选项] 模式 [文件名...]

grep "error" /var/log/messages
//在/var/log/messages 中查找包含字符串 "error" 的行

grep -v "error" /var/log/messages
//在/var/log/messages 中查找不包含字符串 "error" 的行

grep -n -A 10 -B 10 "error" /path/to/logfile
//查看日志中 error 信息前后十行内容

cat file.txt | grep pattern
//可以使用管道符 | 将多个命令连接起来,使它们的输出和输入进行流式处理。
//因此,可以使用 cat 命令读取文件内容,并将其通过管道传递给 grep 命令进行字符串匹配。

wc

是 Linux 中的一个命令,用于统计文件中的行数、单词数和字符数等信息。

wc 命令的常用选项包括:

  • -l:统计文件中的行数。
  • -w:统计文件中的单词数。
  • -c:统计文件中的字符数。
  • -m:统计文件中的字符数,包括换行符。

正则表达式

grep可以搭配正则表达式使用

  • .:匹配任意一个字符,但不包括换行符。
  • ^:匹配行首,在多行模式下匹配每行的开头。
  • $:匹配行尾,在多行模式下匹配每行的结尾。
  • *:匹配前面的字符0次或多次。
  • +:匹配前面的字符1次或多次。
  • ?:匹配前面的字符0次或1次。
  • {m}:匹配前面的字符恰好m次。
  • {m,n}:匹配前面的字符至少m次,至多n次。
  • []:匹配方括号内的任意一个字符。
  • |:匹配左右两边任意一个表达式。
  • \:转义字符,用于匹配特殊字符本身。
grep -E '^(hello|world)' file.txt
//在 file.txt 文件中查找所有最前面包含 "hello" 或者 "world" 的行

grep -E '\b(25[0-5]|2[0-4][0-9]|[1-9][0-9]{0,1}|1[0-9]{2}
|0)\.(25[0-5]|2[0-4][0-9]|[1-9][0-9]{0,1}|1[0-9]{2}
|0)\.(25[0-5]|2[0-4][0-9]|[1-9][0-9]{0,1}|1[0-9]{2}
|0)\.(25[0-5]|2[0-4][0-9]|[1-9][0-9]{0,1}|1[0-9]{2}
|0)\b' test.txt

//匹配test.txt中包含Ipv4地址的行,不含前导零
//25[0-5]:250-255
//2[0-4][0-9]:200-249 
//1[0-9]{2}:100-199
//[1-9][0-9]{0,1}:1-99
//0:0
//\.:'.'转义 \b:匹配单词边界


;