在Linux 操作系统中,如果想编辑文本文件时,希望显示在其前面附加行号的行,这时 Linux 中 nl 命令就派上用场,nl 命令对文件中的行进行编号。

Linux nl命令

nl 命令是一个 Unix/Linux 实用程序,用于为行编号,接受来自文件或来自 STDIN 的输入。 它将每个指定的文件复制到 STDOUT,并在行前附加行号。

nl [OPTION]… [FILE]…

为了快速了解nl命令,我们创建了一个文本文档,里面内容是以前写的脚本。 使用 nl 命令,我们将向您展示如何在此文本文档中添加行号。

通过学习Linux 中nl 命令。 请按照以下说明了解可用于此命令的各种选项。

-b, --body-numbering=STYLEuse STYLE for numbering body lines-d, --section-delimiter=CCuse CC for separating logical pages-f, --footer-numbering=STYLEuse STYLE for numbering footer lines-h, --header-numbering=STYLEuse STYLE for numbering header lines-i, --line-increment=NUMBERline number increment at each line-l, --join-blank-lines=NUMBERgroup of NUMBER empty lines counted as one-n, --number-format=FORMATinsert line numbers according to FORMAT-p, --no-renumberdo not reset line numbers at logical pages-s, --number-separator=STRINGadd STRING after (possible) line number-v, --starting-line-number=NUMBERfirst line number on each logical page-w, --number-width=NUMBERuse NUMBER columns for line numbers--help display this help and exit--versionoutput version information and exit

nl 命令将为文件中的所有或部分行添加序号。 一旦你知道了语法。 在下面的示例中,使用该命令介绍一些最常用的选项,展示如何根据文件的格式调整命令选项。

如何在 Linux 上使用 nl 命令

1.将行号添加到文件中
要将行号添加到文件中,只需将文件名传递给 nl 命令即可。 默认情况下,行号将添加到文件中的每一行。

默认情况下,输出会添加一个制表符,然后是行号,最后是文本本身。

2.使用 -s 选项改变格式

我们试着稍微改变一下格式。 格式化行号的一种常见方法是在数字后面加上句点。 要使用 nl 命令执行此操作,我们将使用 -s 选项。 我们还将指定“.”

表示我们希望行号以点和空格开头。

3.去掉行号前面的空格

如果我们想操作行号前面的空格,可以使用 -w选项来完成。 为了完全消除空间,我们将指定宽度为 1。

请注意,我们仍在使用上一个示例中的 -s 选项,它将结合两种格式更改。

4.为空行编号

默认情况下,nl 命令不会为空行编号。只有带有文本的行才会被编号。 如果您还需要为空行编号,可以使用 -b a 选项来完成。

5.从特定行号开始编号

如果想从 1 以外的某个数字开始编号,可以使用带有 nl 的 -v 选项并指定其他数字。 例如,我们将从 50 开始对行进行编号。

6.覆盖默认增量

Linux 中的默认增量模式是 1。这可以使用 -i 选项进行更改。 第一行号是 1,不能使用 -i 更改。

7.要在每行包含前导零

要在每行包含前导零,可以将 -n rz 选项与 nl 一起使用。


linux nl命令C/C++代码实现

int main(int argc, char **argv)
{while ((c = getopt(argc, argv, "pb:d:f:h:i:l:n:s:v:w:")) != -1) {switch (c) {case 'p':restart = 0;break;case 'b':parse_numbering(optarg, BODY);break;case 'd':clen = mbrlen(optarg, MB_CUR_MAX, NULL);if (clen == (size_t)-1 || clen == (size_t)-2)errx(EXIT_FAILURE,"invalid clen argument -- %s", optarg);if (clen != 0) {memcpy(delim1, optarg, delim1len = clen);clen = mbrlen(optarg + delim1len,MB_CUR_MAX, NULL);if (clen == (size_t)-1 ||clen == (size_t)-2)errx(EXIT_FAILURE,"invalid clen argument -- %s", optarg);if (clen != 0) {memcpy(delim2, optarg + delim1len,delim2len = clen);if (optarg[delim1len + clen] != '\0')errx(EXIT_FAILURE,"invalid delim argument -- %s",optarg);}}break;case 'f':parse_numbering(optarg, FOOTER);break;case 'h':parse_numbering(optarg, HEADER);break;case 'i':errno = 0;val = strtol(optarg, &ep, 10);if ((ep != NULL && *ep != '\0') ||((val == LONG_MIN || val == LONG_MAX) && errno != 0))errx(EXIT_FAILURE,"invalid incr argument -- %s", optarg);incr = (int)val;break;case 'l':errno = 0;uval = strtoul(optarg, &ep, 10);if ((ep != NULL && *ep != '\0') ||(uval == ULONG_MAX && errno != 0))errx(EXIT_FAILURE, "invalid num argument -- %s", optarg);nblank = (unsigned int)uval;break;case 'n':if (strcmp(optarg, "ln") == 0) {format = FORMAT_LN;} else if (strcmp(optarg, "rn") == 0) {format = FORMAT_RN;} else if (strcmp(optarg, "rz") == 0) {format = FORMAT_RZ;} elseerrx(EXIT_FAILURE,"illegal format -- %s", optarg);break;case 's':sep = optarg;break;case 'v':errno = 0;val = strtol(optarg, &ep, 10);if ((ep != NULL && *ep != '\0') ||((val == LONG_MIN || val == LONG_MAX) && errno != 0))errx(EXIT_FAILURE,"invalid startnum value -- %s", optarg);startnum = (int)val;break;case 'w':errno = 0;val = strtol(optarg, &ep, 10);if ((ep != NULL && *ep != '\0') ||((val == LONG_MIN || val == LONG_MAX) && errno != 0))errx(EXIT_FAILURE,"invalid width value -- %s", optarg);width = (int)val;if (!(width > 0))errx(EXIT_FAILURE,"width argument must be > 0 -- %d",width);break;case '?':default:usage();}}argc -= optind;argv += optind;switch (argc) {case 0:break;case 1:if (strcmp(argv[0], "-") != 0 &&freopen(argv[0], "r", stdin) == NULL)err(EXIT_FAILURE, "%s", argv[0]);break;default:usage();}...
}

编译运行



总结

Linux 中的 nl 命令是数字行的缩写。 如果有一个大文本文档并且需要添加行号,nl 命令是不二之选。 无需经历手动为每行编号,只需从命令行使用 nl 即可在几秒钟内完成。更多信息可以使用 man 命令来阅读有关 nl 命令及其官方文档的更多信息。

欢迎关注微信公众号【程序猿编码】,需要nl 命令完整源码的添加本人微信号(c17865354792)

Linux 中的 nl 命令详解及C/C++代码实现(文件行数)相关推荐

  1. Linux 中的 renice 命令详解及C/C++代码实现

    Linux 中的 nice 命令有助于执行具有修改的调度优先级的程序/进程. 它启动具有用户定义的调度优先级的进程. 如果我们给一个进程更高的优先级,那么内核会为这个进程分配更多的 CPU 时间. 而 ...

  2. Linux 中的 chown 命令详解及C/C++代码实现

    操作系统中的不同用户拥有所有权和权限,以确保文件的安全并限制谁可以修改文件的内容.在 Linux 中,chown 命令用于更改系统中另一个用户对文件或目录的所有权. 什么是 chown 命令? cho ...

  3. Linux 中的 head 命令详解及C/C++代码实现

    head 命令允许您在标准输出中查看文件的初始行,而无需打开文件. 在本文中,学习了如何使用此实用程序及其选项. Linux head命令 head 命令用于打印文件或标准输出的前几行(默认为 10 ...

  4. linux cut命令学习,Linux中的cut 命令详解

    今天小编要跟大家分享的文章是关于Linux中的cut 命令详解.cut 命令在Linux和Unix中的作用是从文件中的每一行中截取出一些部分,并输出到标准输出中.我们可以使用 cut 命令从一行字符串 ...

  5. linux中的tar命令详解,【Linux】tar命令详解

    tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用 ...

  6. linux中ln -s 命令详解

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在 ...

  7. linux中free -m命令详解,Linux中free命令起什么作用呢?

    摘要: 下文讲述Linux中free的功能说明,如下所示: free命令功能: 用于返回linux系统的物理内存和物理空闲内存 还有交换内存 及被内核使用的缓冲和缓存 free命令的原理: 通过查询/ ...

  8. linux中的du 命令详解

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...

  9. linux桌面怎么解压tar文件,Linux中tar解压缩命令详解-tar文件怎么打开

    语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用. 主选项:c 创建新的档案文件.如果用户想备份一个目录或是一些 ...

最新文章

  1. js中的json对象和字符串之间的转化
  2. 阿里云 OpenAPI 开发者门户全新上线
  3. 对discuz的代码分析学习(三)mysql驱动
  4. 太极虚拟服务器,太极 中标 云服务器
  5. boost库编译安装以及Qt导入
  6. JVM专题之垃圾回收器
  7. 必做作业三:原型化系统-社区分享app
  8. HDU4530:小Q系列故事——大笨钟
  9. java多线程知识点之wait和sleep的区别
  10. ST-Link系列usb驱动器下载
  11. Phoenix创建Hbase二级索引_尚硅谷大数据培训
  12. C语言(爱心表白代码)
  13. AI产业链的划分,主要可分为基础层、技术层和应用层
  14. B - 最少硬币问题
  15. Hive小额数据处理(模拟数据已给出)
  16. 查看锐捷poe交换机供电状态_锐捷 RG-S2910-24GT4SFP-UP-H 24个电口支持PoE和PoE+供电交换机...
  17. Android通过url下载图片到手机本地并显示和删除本地ImageUtil工具类
  18. 成功解决电脑能连上WIFI,却不能用浏览器
  19. 脑电伪迹长什么样呢?看这篇就够了
  20. IData T1扫码终端H5 扫码实现

热门文章

  1. 2022-2027年中国棉纱行业市场全景评估及发展战略规划报告
  2. NLP文本生成的评价指标有什么?
  3. 数字去重(5种方法)
  4. OFDM和F-OFDM的功率谱与峰均功率比仿真
  5. YOLO系列目标检测算法详解
  6. COW(寒假每日一题 19)
  7. 农分期 java_农分期现行业务大揭密,8项业务为农户提供全方向服务
  8. 软件工程专业的论文答辩_软件工程专业论文答辩一般都会问些什么问题啊?(我们老师没联系过我们,什么都不知道)?...
  9. idea中隐藏或显示文件
  10. SF26 | 适用于商品+股指的枢轴点趋势策略