当前位置:首页>Linux>小白看不懂Linux文本处理 这么玩真的能快速上手吗 太香了!

小白看不懂Linux文本处理 这么玩真的能快速上手吗 太香了!

  • 2026-10-11 08:32:27
小白看不懂Linux文本处理 这么玩真的能快速上手吗 太香了!
居然还没摸透过常用的文本处理工具

打开电脑对着Linux终端就发懵,明明想处理个文本,翻半天教程都找不到能用的方法。

你是不是也这样?看着满屏的命令脑袋嗡嗡响,明明只是想删几行字,搜出来的命令写了长长一串,复制过去还报错。

其实Linux处理文本根本没你想的那么复杂,只是没人给你说透最常用的那几个用法罢了。

我刚接触Linux的时候,也觉得文本处理是什么高深的东西,又是正则又是各种参数,背了忘忘了背,真要用的时候还是找不到北。

后来跟着前辈摸了大半年项目才发现,平时工作里百分之九十的文本处理需求,用三个命令就能搞定,根本不需要记那一堆花里胡哨的参数。

最常用的grep 找内容真的快到飞起

你要从一堆日志里找某个报错信息,难道还要一页一页翻吗?那不得翻到下班都摸不着头绪。grep就是干这个活的,把你要找的内容丢进去,一秒给你筛出来所有结果。

比如你要找nginx日志里所有404的请求,直接打一句grep "404" nginx.log,屏幕上立马就出来所有符合的行了,哪里还用你瞎找。

是不是觉得这么简单?还有更方便的,你想找的时候顺便把行号也显示出来,加上个-n参数就好了,出来的结果开头直接带行号,你打开文件就能直接跳过去,不用再数行数。

很多人说grep还能玩出花来,什么反向匹配,递归搜索,其实真正常用的也就这几个。 反向匹配就是把不包含你关键词的行筛出来,比如你要筛掉日志里所有的心跳请求,就加个-v,一下子日志就清爽了好多。

我上次帮同事查线上问题,几十M的日志文件,要找某个用户的请求记录,输入命令不到两秒结果就出来了,同事都看傻了,说他之前还下载到本地用vscode搜,搜半天还卡。

你说就这效率,不比你下载下来折腾香吗?

别觉得正则难,grep支持普通的关键词匹配,要是你会点简单的正则,那更是如虎添翼。比如你要找所有以ERROR开头的行,直接写grep "^ERROR" log就搞定,规则也很好记,^就是行开头,$就是行结尾,就这么简单。

剪切替换都能搞定的awk 比你想的亲民多了

说起awk很多人就头大,觉得这是什么脚本语言,太复杂了学不会。其实真不用学那么复杂,你就记住最常用的用法,就能解决百分之八十的问题。

大部分时候我们用awk干嘛?就是从一行文本里把我们要的那一段切出来啊。比如你的日志是空格分隔的,每一段是不同的字段,你只要取出请求时间和返回码,直接用awk '{print $1 $4}' log就好了啊。

默认就是按空白分隔,$1就是第一个字段,$2就是第二个,最后一个是$NF,就这么记,够你用好久了。

我上周刚处理了一份接口统计数据,每个请求的耗时在最后一列,我要把所有的耗时拿出来算平均值,用awk直接一句就把所有耗时导出来了,导入excel就算好了,比我一行一行复制快一百倍。

你还能按指定的分隔符切分,要是你的文件是逗号分隔的csv,加个-F参数就好了,比如awk -F',' '{print $2 $3}' data.csv,直接就把你要的列切出来,根本不用打开excel折腾。

甚至你还能加过滤条件,比如你只要把状态码是200的行的耗时拿出来,直接写awk '$4 == 200 {print $NF}' log,过滤加提取一步到位,太爽了。

我之前见过有人为了提取几列数据,专门写个python脚本跑,其实awk一行命令就搞定了,折腾那半天干嘛呀。

awk还能搞简单的统计,比如你要算所有请求的总耗时,直接awk '{sum += $NF} END {print sum}' log,结果直接出来,不用你再搞别的。真的,就这些用法,够你应付绝大多数场景了,那些复杂的语法,真用到的时候再查都来得及。

小修改找sed 改文件不用打开就能搞定

有时候你要批量替换文件里的内容,比如把文件里所有的旧域名换成新域名,一个一个打开改不得累死?sed就是干这个的,批量替换分分钟搞定。

最常用的替换语法就是sed 's/旧内容/新内容/g' 文件名,s就是替换的意思,最后的g就是全局替换,整行里所有的匹配都换掉,不加g就只换第一个。记住这个格式,替换就搞定了。

是不是很简单?比如你要把文件里所有的https://换成https://,直接打sed -i 's/https:/https:/g' yourfile,一步替换直接保存到原文件,那个-i参数就是直接修改原文件的意思,要是你怕改错,可以先不加-i,先看看替换出来的结果对不对,没问题了再加-i,稳得很。

除了替换,你还能删指定行,比如你要删掉文件里所有空行,sed -i '/^$/d' 文件名,d就是删除的意思,斜杠中间写你要匹配删除的规则,空行就是^$,就这么简单。

你要删掉第10行,就是sed -i '10d' 文件名,删掉3到5行就是sed -i '3,5d' 文件名,这都不用我多说了吧,规则特别好记。

上次我批量改几十台服务器上的配置文件,全换一个配置项,直接写个简单的shell脚本,用sed批量替换,十分钟不到就全部改完了,要是一台一台登上去改,不得改到明天去。

很多人说sed的正则容易搞混,其实你就改普通的文本内容,根本碰不到那些奇奇怪怪的问题,真遇到特殊字符了,转义一下就好了,多用两次就会了。

这些小技巧 用一次就再也离不开

你甚至可以把这几个命令拼起来用,管线符一接,一步到位搞定复杂需求。比如你要从nginx日志里找出所有404请求的ip,统计每个ip出现了多少次,直接拼起来就是grep "404" nginx.log | awk '{print $1}' | sort | uniq -c | sort -nr,出来就是按次数排序的ip统计,直接就能看哪个ip在扫站。

你看,就这么一句命令,你要写代码得好几行,这里拼一下就出来了,效率高得离谱。

别想着把所有参数都背下来,真没必要,我们是用Linux干活的,不是考认证的,把最常用的这些练熟,就已经能甩别人好几条街了。

很多人刚学的时候总想着把所有命令都学全,结果贪多嚼不烂,真要用的时候啥也想不起来,反而越学越没信心。

你就把这三个命令的常用用法练熟,平时处理文本的需求基本上都能搞定,遇到特殊需求了再去查手册,比你死记硬背管用多了。

我见过好多做了好几年开发的人,都还不知道这些用法,处理个文本还得下载到本地折腾,半天搞不完,你学会了这些,下次处理文本分分钟搞定,领导都得对你高看一眼。

其实Linux文本处理哪有那么难,就是一层窗户纸,捅破了就发现,原来就是这么几个常用命令拼来拼去,根本没什么高深的东西。

今天看完这篇,你赶紧打开你的虚拟机试两下,用两次就熟了,以后再也不用对着文本发愁了。

最新文章

随机文章