MST
星途 面试题库

面试题:Bash中nl命令复杂应用

现有一个包含大量日志信息的文本文件,文件中有很多空行。要求编写一个Bash脚本,使用nl命令给非空行加上行号,并且行号右对齐,宽度为5位,同时将处理后的内容输出到另一个文件中,应该如何实现?
17.0万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
nl -ba -n rz -w 5 input_file.txt > output_file.txt
  • -ba:表示对所有行编号,包括空行,但我们后续要处理去掉空行产生的编号影响。
  • -n rz:使行号右对齐,并且用0填充至指定宽度。
  • -w 5:设置行号宽度为5位。
  • input_file.txt:是包含大量日志信息且有空行的源文件。
  • >:重定向符号,将处理后的内容输出到output_file.txt文件中。

实际执行时,若要真正去除空行编号影响,可以先过滤掉空行再处理,如下:

grep -v '^$' input_file.txt | nl -n rz -w 5 > output_file.txt

grep -v '^$' 用于过滤掉空行,然后通过管道 | 将非空行传递给 nl 命令进行编号处理并输出到目标文件。