You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用cat和grep打印非空行并显示行号?

问题分析与解决办法

为什么你的命令没显示行号?

嘿,我来帮你捋捋问题出在哪哈!你执行的命令cat -n catalog.txt | grep -v '^$' catalog.txt有个小疏忽:当你在grep后面加上catalog.txt时,grep会直接去读取这个文件的原始内容,完全忽略了前面管道传过来的、已经被cat -n加上行号的输出。相当于前面的cat -n白忙活了,grep只处理了原始文件,所以自然看不到行号~

正确的解决办法

这里给你几个可行的方案,随便选一个都能达到你的需求:

方案1:让grep处理管道输出

把grep后面的catalog.txt去掉,这样grep就会接收前面cat -n的输出,过滤掉空行的同时保留行号:

cat -n catalog.txt | grep -v '^$'

方案2:先过滤空行再加行号

反过来操作,先用grep过滤掉空行,再传给cat -n添加行号,效果完全一样:

grep -v '^$' catalog.txt | cat -n

方案3:用nl命令一步到位

其实还有个更省心的命令nl,它默认就会忽略空行,只给非空行添加行号,直接用这个就能搞定:

nl catalog.txt

执行后你就能得到想要的格式:

1  George Jones Berlin 2564536877
     2  Mike Dixon Paris 2794321976

内容的提问来源于stack exchange,提问作者John M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:38:09