如何为每个 space 换行,除了一个?

How to make a new line for every space, except one?

我有一个这样的文本文件:

 www.twitter.com,sev-pool,tiger lion,
 www.google.com,"http google-pool,,
 www.facebook.com,pool,usa mexico canada,

除了本例中的 "http google-pool 中的 space 之外,我想让每个 space 都换行,因为" 在这条线上 不匹配

有没有一种方法可以不使用行号来做到这一点?也许 if 语句依赖于 " 或任何其他方式?

我正在使用 tr 命令:tr " " "/n" 但我无法省略所需的行。

预期输出:

www.twitter.com,sev-pool,tiger
lion,
www.google.com,"http google-pool,,
www.facebook.com,pool,usa
mexico
canada,

满足您更新后的要求的 awk 解决方案(忽略 " 不匹配的行):

awk '/"[^"]*$/ { print; next } { gsub(" ", "\n"); print }' file

注:

  • 假设包含不匹配 " 的行应从 space 到换行符的翻译 作为一个整体 排除。

这产生:

www.twitter.com,sev-pool,tiger
lion,
www.google.com,"http google-pool,,
www.facebook.com,pool,usa
mexico
canada,
awk '!/google/{gsub(/ /,"\n")}1' file

www.twitter.com,sev-pool,tiger
lion,
www.google.com,"http google-pool,,
www.facebook.com,pool,usa
mexico
canada,