sed 替换,包括换行

Dav*_*ove 5 regex awk sed

我想更改一个文本文件,以便将任何以“Length:”开头的行附加到一行。

我知道这sed '/\nLength:/ Length:/'是行不通的,因为它sed是基于行的。

谷歌搜索“如何匹配 sed 中的换行符”确实找到了一种复杂的 sed 方法,用于将模式连接到下一行,但我不知道如何调整它。

帮助将不胜感激。

Jua*_*doy 2

awk你可以使用类似的东西:

awk '/^/&&!/^Length/{printf "\n"}{printf "%s",$0}' infile
Run Code Online (Sandbox Code Playgroud)

\n当行开头^匹配时才打印。例外: Length在开始时发现。

  • 我个人更喜欢将 `printf "\n"` 更改为 `print ""` (但这只是一种风格)。但是,您应该使用带有 `printf` 的格式说明符,例如 `printf "%s", $0`,以避免解释该行中的字符。 (2认同)