Shell 除了一个空间外,如何为每个空间创建一条新线?

Shell 除了一个空间外,如何为每个空间创建一条新线?,shell,unix,if-statement,sh,tr,Shell,Unix,If Statement,Sh,Tr,我有这样一个文本文件: www.twitter.com,sev-pool,tiger lion, www.google.com,"http google-pool,, www.facebook.com,pool,usa mexico canada, 在本例中,我想让每个空格都成为新行,除了“http google pool中的空格,因为”在这一行上是不匹配的 有没有办法不用行号就可以做到这一点?可能是依赖于“”的if语句,还是其他方式 我正在使用tr命令:tr”““/n”,但我无法省略所

我有这样一个文本文件:

 www.twitter.com,sev-pool,tiger lion,
 www.google.com,"http google-pool,,
 www.facebook.com,pool,usa mexico canada,
在本例中,我想让每个空格都成为新行,除了“http google pool中的空格,因为
在这一行上是不匹配的

有没有办法不用行号就可以做到这一点?可能是依赖于”的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
解决方案(忽略带有不匹配
”的行):

注:

  • 假设包含不匹配的
    的行应作为一个整体从空格到换行符转换中排除
这将产生:

www.twitter.com,sev pool,tiger
狮子,
www.google.com,“http谷歌池,,
www.facebook.com,池,美国
墨西哥
加拿大,

tr''\n'
反斜杠、单引号(或反斜杠的两倍)
awk '/"[^"]*$/ { print; next } { gsub(" ", "\n"); print }' file
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,