这里有点好笑,我正在尝试通过先决条件进入佐治亚理工学院的 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 -b
和nl
是一样的。欢乐!
$ 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