8. 文件行数的统计和关键字的搜索
1. 从文件的后500行打印,如有更新,实时展示
tail -fn 500 file.txt
- -f 选项:
作用:表示“跟随”(follow),即实时监控文件的变化。
功能:当文件有新内容追加时(例如日志文件不断写入新日志),tail 会持续显示新内容。
适用场景:常用于监控日志文件或其他动态更新的文件。
tail -f file.txt 运行后,tail 会显示文件的最后 10 行(默认),并持续监控文件的变化
- -n 选项:
作用:指定显示文件的最后多少行内容。
2. 查询文件的后500行是否出现关键字1
tail -fn 500 file.txt | grep "关键字1"
3. 查询关键字在文件中出现的行数
grep -c "关键字" file.txt
输出:error 在 logfile.txt 中出现的行数(即出现行的数量)。
4. 查找关键字出现的具体行
grep -n "关键字" file.txt
输出:warning 在 logfile.txt 中出现的行号及具体内容
5. 查询关键字在文件中出现的行数
grep -o "关键字" | wc -l
6. 忽略大小写查找关键字
grep -i -o "关键字" | wc -l
7. 递归查找目录及子目录下文件出现关键字的行数
grep -r -c "关键字" /var/log/
如:grep -r -c "error" /var/log/
输出:error 在 /var/log/ 目录及其子目录中每个文件出现的行数。
8. 结合正则表达式查找
grep -c "^2023" file.txt
输出:以 2023 开头的行数。
9. 查关键字在文件中第一次出现的行数
① grep
grep -n "关键字" file.txt | head -1
输出: 行号:行内容
只输出行号:
grep -n "关键字" file.txt | head -1 | cut -d:-f1
② awk
awk '/关键字/{print NR; exit}' file.txt
NR 是 awk 的内置变量,表示当前行号
找到关键字第一次出现的行号后直接退出
③ sed
sed -n '/关键字/{=;q}' file.txt
= 表示打印当前行号,q 表示退出
找到关键字第一次出现的行号后退出。
总结:
- grep:适合快速查找,结合 head 和 cut 可以提取行号。
- awk:适合更复杂的文本处理,直接输出行号。
- sed:简洁高效,适合单行命令
10. 查询文件行数
wc -l file.txt
输出如:
100 logfile.txt
100是行数,logfile.txt是文件名称
如果只需要行数(不显示文件名),使用以下命令:
① wc -l
wc -l < file.txt
或:
cat logfile.txt | wc -l
② awk
awk 'END {print NR}' file.txt
NR 是 awk 的内置变量,表示文件的总行数。
③ sed
sed -n '$=' file.txt
示例:sed -n '$=' logfile.txt
④ 使用 nl 命令
nl file.txt | tail -1
nl 命令可以为文件添加行号,结合 tail 可以查看总行数
⑤ grep和cat结合
grep -c '' file.txt
总结:
- wc -l:最常用,简单高效。
- awk:适合脚本中使用。
- sed:简洁,适合单行命令。
- nl:适合需要查看行号的情况。
推荐使用 wc -l,因为它是最直接和高效的方式!
11. 在文本中找出关键词1第一次出现之后的文档有没有出现关键词2
使用 awk 或 sed 结合 grep 来实现这个需求
① awk
awk '/关键词1/{flag=1} flag && /关键词2/{print "关键词2 出现在关键词1 之后"; exit}' file.txt
命令解析:
- /关键词1/{flag=1}:
当找到 "关键词1" 时,设置一个标志 flag=1,表示 "关键词1" 已经出现。
- flag && /关键词2/:
如果 flag=1(即 "关键词1" 已经出现),并且找到 "关键词2",则执行后面的操作。
- {print "关键词2 出现在关键词1 之后"; exit}:
打印提示信息 "关键词2 出现在关键词1 之后",然后退出命令。
- file.txt:
这是你要搜索的文本文件。
示例:
file.txt 内容如下:
这是第一行
这是关键词1
这是第二行
这是关键词2
这是第三行
命令:awk '/关键词1/{flag=1} flag && /关键词2/{print "关键词2 出现在关键词1 之后"; exit}' file.txt
输出:
关键词2 出现在关键词1 之后
如果没有找到关键词2
如果 "关键词1" 之后没有出现 "关键词2",则命令不会有任何输出。
② sed
sed -n '/关键词1/,${/关键词2/{p;q}}' file.txt
- /关键词1/,${...}:从 "关键词1" 开始到文件末尾。
- 关键词2/{p;q}:如果找到 "关键词2",则打印并退出。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!