【问题标题】:Insert line numbers into file with sed使用 sed 将行号插入文件
【发布时间】:2018-10-19 09:14:49
【问题描述】:

我正在学习如何使用 sed,并看到我可以使用 = 插入行号。但是,这包括一个换行符:

文件:

alpha
beta
gamma

运行sed -n '=;p' file:

1
alpha
2
beta
3
gamma

是否可以在一次调用 sed 时将这些行号插入同一行?所以:

1 alpha
2 beta
3 gamma

我知道使用其他工具也可以做到这一点,但我想知道 sed 的具体功能。有没有办法在 = 之后附加另一个正则表达式替换以删除换行符?

【问题讨论】:

  • 为什么是sedawk -v ln=1 '{print ln++ " " $0 }' file
  • 我知道,但想知道是否有可能。但是我愿意相信 awk 更好......
  • = 命令实际打印行号,它不会将其插入到模式空间中。 sed = file | paste - - 是一种愚蠢的写作方式 nl file
  • 不确定sed 是否像awk here 那样简单。

标签: sed


【解决方案1】:

这对你有用。

sed '=' file | sed 'N; s/\n/ /'

【讨论】:

  • 我的回答中似乎有两个 sed 调用。 :)
  • 你能解释一下吗,这里是干什么的?
  • @YuJiaao 只打印每行开头有行号的文件。 :)
  • 太棒了!如果需要,您是否知道如何用前导 0 填充数字?
  • @Xerus 恐怕我不能用 sed 做到这一点。但解决方法可能是awk '{printf("%0.2d %s\n", NR, $0)}' your_file_name
猜你喜欢
  • 2015-05-06
  • 2023-03-07
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 2019-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多