Ubuntu

sed/awk 文件數據操作

  • November 19, 2018

我有許多以數字開頭的文本文件,如下所示:

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 或一些命令行工具嗎?我只需要將數字放在新行上,與行上的其他文本隔離。

只需記住數字並用換行符替換它後面的空格:

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

如果您的 sed 支持它,您可以使用擴展的正則表達式來提高可讀性:

sed -E 's/^([0-9]+) /\1\n/'
  • [0-9]匹配一個數字
  • *意思是“零次或多次”
  • +意思是“至少一次”
  • \(...\)或者(...)創建一個“擷取組”,第一個擷取組可以引用為\1,等等。
  • \n代表換行符

引用自:https://unix.stackexchange.com/questions/482716