sed/awk 文件数据操作

sed/awk 文件数据操作

我有许多文本文件前面带有这样的数字:

12 some text here
some text here
some text here

或者有时像这样:

123 text here

some more not-so-interesting text here

some text here

even more not-so-interesting text here

我需要它们看起来像这样:

12

some text here
some text here
some text here

使用 sed 或 awk 或某些命令行工具可以吗?我只需要将数字放在新行上,与该行上的其他文本隔离。

答案1

只需记住该数字并将其后面的空格替换为换行符即可:

sed 's/^\([0-9][0-9]*\) /\1\n/'

如果您的 sed 支持它,您可以使用扩展的正则表达式来提高可读性:

sed -E 's/^([0-9]+) /\1\n/'
  • [0-9]匹配一个数字
  • *意思是“零次或多次”
  • +意思是“至少一次”
  • \(...\)(...)创建一个“捕获组”,第一个捕获组可以引用为\1等。
  • \n代表换行符

相关内容