所以我有一个text.txt
包含一些字符行的文件示例:
abc
abc
yxz
abc
现在我想对这样的行进行编号并将其复制到另一个文件中。
最终预期结果:
1 abc
2 abc
3 yxz
4 abc
答案1
Unix 上有许多用于对行进行编号的实用程序,但令人烦恼的是它们不这样做仅有的默认的基本编号。
nl file
是(Unix/GNU,不是 POSIX)对文件行进行编号的命令,但默认情况下它仅对非空行进行编号,并默认处理特殊的页脚/页眉分隔符。要让它对所有行进行编号,您需要执行以下操作:
nl -ba -d '
' text.txt > newfile
(这是上面单引号内的换行符),但即使这不适用于某些nl
实现。
在 POSIX 命令中,我们还有pr
:
pr -tn5 text.txt > newfile
pr -t:n5 text.txt > newfile
尽管它会特别对待换页符。
awk '{printf "%5d %s\n", FNR, $0}' text.txt > newfile
应该没问题,并且可以让您按照您想要的方式格式化数字,例如您的预期产出:
awk '{printf "%-2d %s\n", FNR, $0}' text.txt > newfile
还:
grep -n '^' text.txt > newfile
还有另一种不同的输出格式。
一些cat
实现也支持-n
这一点:
cat -n text.txt > newfile
答案2
我不确定你想要什么(因为你说你想要对文件进行排序,但你给出的输出与输入的顺序完全相同),但要枚举你可以使用的行nl
。
nl filename > outputfile