如何为每个 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,
我有一个这样的文本文件:
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,