我的文件,
PSS-A (Primary A)
PSS-B (Primary B)
PSS-C (Primary C)
PSS-D (Primary D)
PSS-E (Primary E)
PSS-F (Primary F)
PSS-G (Primary G)
PSS-H (Primary H)
PSS-I (Primary I)
SPARE (SPARE)
输出文件,
1> PSS-A (Primary A)
2> PSS-B (Primary B)
3> PSS-C (Primary C)
4> PSS-D (Primary D)
5> PSS-E (Primary E)
6> PSS-F (Primary F)
7> PSS-G (Primary G)
8> PSS-H (Primary H)
9> PSS-I (Primary I)
10> SPARE (SPARE)
答案1
适合这项工作的工具是nl
:
nl -w2 -s'> ' file
您可能需要w
根据文件中的总行数调整 idth 选项(如果您希望数字很好地对齐)。
输出:
1> PSS-A (Primary A)
2> PSS-B (Primary B)
3> PSS-C (Primary C)
4> PSS-D (Primary D)
5> PSS-E (Primary E)
6> PSS-F (Primary F)
7> PSS-G (Primary G)
8> PSS-H (Primary H)
9> PSS-I (Primary I)
10> SPARE (SPARE)
答案2
如果您想要与指定的格式相同的格式
awk '{print NR "> " $s}' inputfile > outputfile
否则,尽管不是标准的,该cat
命令的大多数实现都可以为您打印行号(至少在 GNU、busybox、Solaris 和 FreeBSD 实现中,数字填充为宽度 6,后跟 TAB)。
cat -n inputfile > outputfile
或者您可以将grep -n
(数字后跟:
) 与正则表达式一起使用,例如^
匹配任何行:
grep -n '^' inputfile > outputfile
答案3
在 Linux/Unix 中,几乎总是有多种方法来完成常见任务。为了完整起见,除了显而易见的方法之外,您还可以使用以下其他方法:
pr -t -n [file]
来自旧命令,用于格式化文本以发送到行式打印机。 “-t”将省略与终端无关的页眉和页脚信息。
这是一个可爱的 sed 方法,它每隔一行打印行号。我们使用“粘贴”将它们折叠成一行:
sed = /etc/passwd | paste - -
或者,我们可以使用一个真正的编辑器,ed:
echo '1,$n' | ed -s [file]
或者,例如 vi 的非光标寻址前身:
printf 'set number\ng/^/p\n' | ex /etc/passwd
最后一个复杂的答案,需要 ksh93 或 bash (以及 seq 命令。使用 .. 范围和 eval 语句留作练习):
paste <(seq $(wc -l < [file])) [file]
在 Debian Linux、FreeBSD 和 Solaris 10 上进行了测试(最后一个由于没有“seq”而失败)。
答案4
我已经通过以下方法完成了
命令:cat -n filename |sed -r "s/^\s+//g"| sed "s/^[0-9]*/&\> /g"
输出
cat -n u.txt |sed -r "s/^\s+//g"| sed "s/^[0-9]*/&\> /g"
1> PSS-A (Primary A)
2> PSS-B (Primary B)
3> PSS-C (Primary C)
4> PSS-D (Primary D)
5> PSS-E (Primary E)
6> PSS-F (Primary F)
7> PSS-G (Primary G)
8> PSS-H (Primary H)
9> PSS-I (Primary I)
10> SPARE (SPARE)