使用sed或awk组合匹配的行?

Dar*_*ted 3 linux shell awk sed

我有一个如下文件:

1,  
cake:01351  
12,  
bun:1063  
scone:13581  
biscuit:1931  
14,  
jelly:1385
Run Code Online (Sandbox Code Playgroud)

我需要对它进行转换,以便在一行开头读取一个数字时,它与它下面的行组合,但如果在开头没有数字,则该行保持不变.这将是我需要的输出:

1,cake:01351  
12,bun:1063  
scone:13581  
biscuit:1931  
14,jelly:1385
Run Code Online (Sandbox Code Playgroud)

使用sed实现这一点很麻烦,似乎它可能不是我认为应该非常简单的最佳方式.

任何建议都非常感谢.

mar*_*ton 18

一个非常基本的sed实现:

sed -e '/^[0-9]/{N;s/\n//;}'
Run Code Online (Sandbox Code Playgroud)

这依赖于第一个字符,只有 '数字'行是一个数字(如您所指定).

  • 匹配以数字开头的行, ^[0-9]
  • 带来下一行, N
  • 删除嵌入的换行符, s/\n//