LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1821|回复: 13

如何给一个文本文件插入行号

[复制链接]
发表于 2006-5-5 15:09:19 | 显示全部楼层 |阅读模式
一个文本文件,我想给它每行开始写出行号,注意不是显示行号,是让行号成为文本的一部分!
谢谢!!!:ask
发表于 2006-5-5 15:44:58 | 显示全部楼层
  1. [0 N0.2011 huan /tmp/work ]$ cat filename
  2. 00 01 02 03 04
  3. 10 11 12 13 14
  4. 20 21 22 23 24
  5. [0 N0.2012 huan /tmp/work ]$ sed -i = filename
  6. [0 N0.2013 huan /tmp/work ]$ sed -i 'N;s/\n/\t/' filename
  7. [0 N0.2014 huan /tmp/work ]$ cat filename
  8. 1       00 01 02 03 04
  9. 2       10 11 12 13 14
  10. 3       20 21 22 23 24
  11. [0 N0.2015 huan /tmp/work ]$
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-5-5 17:01:52 | 显示全部楼层
不用这麽麻烦,你把上面的 filename 导出一个新文件就行了

cat -n filename > filename1

filename1 便带有行号了
回复 支持 反对

使用道具 举报

发表于 2006-5-5 17:36:14 | 显示全部楼层
grep -n ^ file >file.new

也可以,你要什么格式。
回复 支持 反对

使用道具 举报

发表于 2006-5-5 17:49:50 | 显示全部楼层
awk '{print NR,$0}'
回复 支持 反对

使用道具 举报

发表于 2006-5-5 18:00:58 | 显示全部楼层
pr -tn file
回复 支持 反对

使用道具 举报

发表于 2006-5-5 18:17:19 | 显示全部楼层
perl -pe 's/^/$. /'
回复 支持 反对

使用道具 举报

发表于 2006-5-5 18:51:31 | 显示全部楼层
其实还有一个专门统计行数的程序叫nl,很古老的,据说可移植性比`cat -n'之类的高。大多数*NIX系统都有的,而cat的`-n'选项不是所有版本的cat都支持的。

但它的用法看起来不怎么直观。一般文件`nl -ba'大概也就够了,但碰到:

  1. line1
  2. \:\:\:
  3. line3
  4. \:\:
  5. line5
复制代码


这样的文件,就有问题了,`nl -ba'就不行了,我看了一下man,大概应该

nl -d^M -ba

或者说是

nl -d'
'
回复 支持 反对

使用道具 举报

发表于 2006-5-5 19:16:46 | 显示全部楼层
嘿嘿,谢谢 troll 兄,大开眼界了!

关於 cat 嘛,cat 本来属於 coreutils,这个可能是 coreutils 的版本问题了。其实 cat 还有个改良版叫 dog,(真搞笑),除兼容 cat 外,功能也加强了。
回复 支持 反对

使用道具 举报

发表于 2006-5-5 19:42:05 | 显示全部楼层
gnu的cat大概都支持吧,我不确定,这个可移植性应该是指所有类UNIX系统。

我这两天再翻了一遍Unix FAQ和GNU Bash FAQ,觉得shell脚本的可移植性真是个大学问。有时Linux用户习以为常的用法,在Linux以外的Unix世界根本行不通,comp.unix.shell中的帖子关于GNU Bash的只占了很小一部分。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表