当前位置: 首页 > article >正文

0018. shell命令--nl

目录

18. shell命令--nl

功能说明

语法格式

选项说明

实践操作

注意事项


18. shell命令--nl

功能说明

        nl 是 Linux 中的一个实用程序,用于给文件的每一行加上行号。它通常用于查看或打印带有行号的文件内容。nl命令来自英文词组“Number of lines”的缩写,其功能是用于显示文件内容及行号,使用nl命令会有类似于“cat -n 文件名”的效果,除此之外还可以对于显示的行号格式进行深度定制。

语法格式

nl [选项] [文件...]

SYNOPSIS
       nl [OPTION]... [FILE]... 

选项说明

  • -b:指定行号指定的方式。
    • t:只对非空行添加行号。
    • a:对所有行(包括空行)添加行号。
    • n:对没有空字符的行添加行号(默认)。
    • p:对逻辑页(使用 formfeed 字符分隔的行)的第一行添加行号。
    • s:只对每个逻辑页的第一行添加行号(与 -p 类似,但只打印行号,不打印内容)。
    • j:对每个逻辑页的所有行添加行号(与 -p 类似,但打印所有行)。
  • -d:指定分隔符,用于在行号和内容之间插入。默认为制表符。
  • -f:指定行号的格式。
    • ln:左对齐,没有前导零(默认)。
    • rn:右对齐,没有前导零。
    • rz:右对齐,有前导零。
    • lz:左对齐,有前导零。
  • -i:指定行号的增量。例如,-i 2 意味着每两行增加一次行号。
  • -l:指定最大的行数(当处理大文件时有用)。
  • -n:指定行号的格式。
    • ln:左对齐,没有前导零(默认)。
    • rn:右对齐,没有前导零。
    • rz:右对齐,有前导零。
    • lz:左对齐,有前导零。
    • wn:行号前没有空格,且行号字段宽度为 n 个字符。
    • bn:在行号前后都加上空格,且行号字段宽度为 n 个字符。
  • -p:逻辑页(与 -b p 类似)。
  • -s:在行号和内容之间插入指定的字符串(与 -d 类似,但 -s 允许更长的字符串)。
  • -v:设置开始行号。例如,-v 10 意味着从 10 开始编号。
  • -w:设置行号字段的宽度。

实践操作

1. 显示指定文件内容及行号信息
nl /root/.bashrc

2. 显示指定文件内容及行号信息,空行也加上行号
nl -b a /root/.bashrc

3. 空行也算一行,并且行号前面自动补0,统一输出格式后显示指定文件内容及行号信息
nl -b a -n rz /root/.bashrc

4. 设置行号字段的宽度为 N 个字符,并右对齐
nl -n rz -w 2 /root/.bashrc
nl -n rz -w 5 /root/.bashrc

5. 为非空行添加行号,并设置开始行号为 100
nl -b t -v 100 /root/.bashrc

6. 使用自定义的分隔符(如顿号)添加行号
nl -s '、' /root/.bashrc

7. 与其它符号或命令结合使用
nl /etc/ssh/sshd_config | less
grep "$PS1" /etc/bashrc
nl /etc/bashrc | grep "$PS1"

命令示例:1. 显示指定文件内容及行号信息

nl /root/.bashrc

输出结果:

[root@MineGi ~]# nl /root/.bashrc
     1    # .bashrc
       
     2    # User specific aliases and functions
       
     3    alias rm='rm -i'
     4    alias cp='cp -i'
     5    alias mv='mv -i'
       
     6    # Source global definitions
     7    if [ -f /etc/bashrc ]; then
     8        . /etc/bashrc
     9    fi
[root@MineGi ~]#

命令示例:2. 显示指定文件内容及行号信息,空行也加上行号

nl -b a /root/.bashrc

输出结果:

[root@MineGi ~]# nl -b a /root/.bashrc
     1    # .bashrc
     2    
     3    # User specific aliases and functions
     4    
     5    alias rm='rm -i'
     6    alias cp='cp -i'
     7    alias mv='mv -i'
     8    
     9    # Source global definitions
    10    if [ -f /etc/bashrc ]; then
    11        . /etc/bashrc
    12    fi
[root@MineGi ~]# 

命令示例:3. 空行也算一行,并且行号前面自动补0,统一输出格式后显示指定文件内容及行号信息

nl -b a -n rz /root/.bashrc

输出结果:

[root@MineGi ~]# nl -b a -n rz /root/.bashrc
000001    # .bashrc
000002    
000003    # User specific aliases and functions
000004    
000005    alias rm='rm -i'
000006    alias cp='cp -i'
000007    alias mv='mv -i'
000008    
000009    # Source global definitions
000010    if [ -f /etc/bashrc ]; then
000011        . /etc/bashrc
000012    fi
[root@MineGi ~]#

命令示例:4. 设置行号字段的宽度为 N 个字符,并右对齐

nl -n rz -w 2 /root/.bashrc
nl -n rz -w 5 /root/.bashrc

输出结果:

[root@MineGi ~]# nl -n rz -w 2 /root/.bashrc
01    # .bashrc
   
02    # User specific aliases and functions
   
03    alias rm='rm -i'
04    alias cp='cp -i'
05    alias mv='mv -i'
   
06    # Source global definitions
07    if [ -f /etc/bashrc ]; then
08        . /etc/bashrc
09    fi
[root@MineGi ~]# nl -n rz -w 5 /root/.bashrc
00001    # .bashrc
      
00002    # User specific aliases and functions
      
00003    alias rm='rm -i'
00004    alias cp='cp -i'
00005    alias mv='mv -i'
      
00006    # Source global definitions
00007    if [ -f /etc/bashrc ]; then
00008        . /etc/bashrc
00009    fi
[root@MineGi ~]# 

命令示例:5. 为非空行添加行号,并设置开始行号为 100

nl -b t -v 100 /root/.bashrc

输出结果:

[root@MineGi ~]# nl -b t -v 100 /root/.bashrc
   100    # .bashrc
       
   101    # User specific aliases and functions
       
   102    alias rm='rm -i'
   103    alias cp='cp -i'
   104    alias mv='mv -i'
       
   105    # Source global definitions
   106    if [ -f /etc/bashrc ]; then
   107        . /etc/bashrc
   108    fi
[root@MineGi ~]# 

命令示例:6. 使用自定义的分隔符(如顿号)添加行号

nl -s '、' /root/.bashrc

输出结果:

[root@MineGi ~]# nl -s '、' /root/.bashrc
     1、# .bashrc
         
     2、# User specific aliases and functions
         
     3、alias rm='rm -i'
     4、alias cp='cp -i'
     5、alias mv='mv -i'
         
     6、# Source global definitions
     7、if [ -f /etc/bashrc ]; then
     8、    . /etc/bashrc
     9、fi
[root@MineGi ~]#

命令示例:7. 与其它符号或命令结合使用

nl /etc/ssh/sshd_config | less
grep -n "\$PS1" /etc/bashrc
nl /etc/bashrc | grep "$\PS1"

输出结果:

[root@MineGi ~]# nl /etc/ssh/sshd_config | less
[root@MineGi ~]# grep -n "\$PS1" /etc/bashrc
12:if [ "$PS1" ]; then
41:  #[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
42:  [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\]\w\[\e[0m\]]\\$ "
46:  # if [ "$PS1" ]; then
82:            if [ "$PS1" ]; then
[root@MineGi ~]# nl /etc/bashrc | grep "$\PS1"
     9    if [ "$PS1" ]; then
    38      #[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
    39      [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\]\w\[\e[0m\]]\\$ "
    43      # if [ "$PS1" ]; then
    76                if [ "$PS1" ]; then
[root@MineGi ~]#

注意事项

  • 在使用 nl 命令时,要注意文件的大小和行数。如果文件非常大,包含数百万或数千万行,那么 nl 命令可能会消耗大量的内存和 CPU 时间。在这种情况下,你可以考虑使用 -l 选项来限制 nl 命令处理的行数。
  • 另外,虽然 nl 命令可以很方便地为文件添加行号,但如果你需要频繁地对文件进行这种操作,或者需要在多个文件中保持一致的行号格式,那么你可能需要考虑使用更强大的文本处理工具或编程语言来实现这些功能。

nl 是 Linux 中一个非常实用的命令,它可以帮助你快速地为文件的每一行添加行号。通过掌握 nl 命令的基本用法和常用选项,你可以更高效地处理文本文件,并在需要时轻松地查看或打印带有行号的文件内容。如果你对 nl 命令还有其他疑问或需要了解更多高级用法,建议查阅其 man 页面或相关文档。


http://www.kler.cn/a/416731.html

相关文章:

  • 工作中Linux 内核的链表算法的使用
  • RNN And CNN通识
  • MySQL的Json类型数据操作方法
  • 阿里云人工智能平台(PAI)免费使用教程
  • JAVA项目-------医院挂号系统
  • DevExpress的web Dashboard应用
  • LAN,WAN,VLAN,WLAN,VPN了解笔记
  • Unity类银河战士恶魔城学习总结(P153 Audio Manager音频)
  • 2023年MathorCup高校数学建模挑战赛—大数据竞赛A题基于计算机视觉的坑洼道路检测和识别求解全过程文档及程序
  • Lodash的debounce方法:优化你的函数调用
  • llamafactory微调
  • 电子资料管理系统ImageUpload存在任意文件上传致RCE漏洞
  • 【Leetcode 每日一题 - 补卡】3235. 判断矩形的两个角落是否可达
  • PHP如何在MongoDB中使用正则表达式进行查询
  • GY302光照传感器模块详解
  • PotPlayer 最新版本支持使用 Whisper 自动识别语音生成字幕
  • Kafka AdminClient API 来获取特定 Kafka 消费组的消费延迟
  • 基于特征子空间的高维异常检测:一种高效且可解释的方法
  • ASP.net WebAPI 上传图片实例(保存显示随机文件名)
  • 时频转换 | Matlab基于垂直二阶同步压缩变换vertical second-order synchrosqueezing一维数据转二维图像方法
  • 微服务篇-微服务保护:使用 Sentinel 来实现请求限流、线程隔离、服务熔断和 Fallback 备用方案的使用
  • 终端环境下关闭显示器
  • 基于AutoEncode自编码器的端到端无线通信系统matlab误码率仿真
  • Keil Debug 添加变量监视
  • 【北京迅为】iTOP-4412全能版使用手册-第二十章 搭建和测试NFS服务器
  • Figma入门-自动布局