所有非空行的行号?

所有非空行的行号?

这里有点好笑,我正在尝试通过先决条件进入佐治亚理工学院的 Udacity 高性能计算机架构课程我这辈子都搞不清楚他们想要什么

问题如下:

要列出文件的内容并显示非空行的行号,请使用带有选项的命令:____ ___ 文件名。

我试过了nl。它不起作用。有史以来最奇怪的问题。

问题

答案1

虽然cat的编号不是 POSIX,nl但 POSIX 还定义了nl使用的编号样式:

−b type  Specify which logical page  body  lines  shall  be  numbered.
         Recognized types and their meaning are:

         a       Number all lines.

         t       Number only non-empty lines.

         n       No line numbering.

         pstring Number  only  lines  that  contain  the basic regular
                 expression specified in string.

         The default type for logical page body shall be t (text lines
         numbered).

因此,即使它是默认值:

nl -bt filename

答案2

显然,cat也有这个选项,

-b,--number-nonblank非空输出行数,覆盖-n

所以现在我猜cat -bnl是一样的。欢乐!

$ cat -b ./foo.py 
     1  a = 5
     2  a = a + 1

     3  print "foobarbaz" + str(a);

$ nl ./foo.py 
     1  a = 5
     2  a = a + 1

     3  print "foobarbaz" + str(a);

答案3

“nl”比“cat -b”提供更多格式选项。

标点符号,例如句号“.”或任何其他字符可以跟在行号后面,并且还可以使用“-s”选项添加不同数量的空格。

仅限数字非空行:

$ echo -e "one\ntwo\nthree\n\n\nfour\n\nfive\nsix\nseven\n\neight\n\n\n\nnine\nten\n"|nl -bt -s\.\  -
 1. one
 2. two
 3. three


 4. four

 5. five
 6. six
 7. seven

 8. eight



 9. nine
10. ten

行号和行之间有更多空格:

$ echo -e "one\ntwo\nthree\n\n\nfour\n\nfive\nsix\nseven\n\neight\n\n\n\nnine\nten\n"|nl -bt -s\.\ \ \ \ \ \  -
 1.      one
 2.      two
 3.      three


 4.      four

 5.      five
 6.      six
 7.      seven

 8.      eight



 9.      nine
10.      ten

行号后有两个星号:

$ echo -e "one\ntwo\nthree\n\n\nfour\n\nfive\nsix\n\n"|nl -bt -s**\ \ \ \ \ \ \  -
 1**       one
 2**       two
 3**       three


 4**       four

 5**       five
 6**       six

某些字符(如括号)必须使用反斜杠从 shell 中转义:

$ echo -e "one\ntwo\nthree\n\n\nfour\n\nfive\nsix\n\n"|nl -bt -s\(\(\ \ \ \ \ \ \  -
 1((       one
 2((       two
 3((       three


 4((       four

 5((       five
 6((       six

相关内容