2017-04-11 64 views
1

到目前为止我的代码是这样的:的bash:读取文件和打印1个在标准输出每行字

#!/bin/bash 

for word in $(<$1) 
do 
    echo "$word" 
done 

,其与包含输入文件(SP =空间,TAB =标签和EOL - 行尾):

< SP>时间 < SP>具有 < SP>来, < TAB> < SP > < SP>海象 < SP>说, < SP> < SP> < SP> < SP>说话 < SP> < SP>许多 < SP的>东西: < EOL>

将输出:

The 
time 
has 
come, 
the 
Walrus 
said, 
to 
speak 
of 
many 
things: 

我需要我的程序与的功能输出被定义为通过空白TAB字符边界的字符的任何序列。因此,使用相同的输入,我希望我的脚本输出:

The 
time 
has 
come, 

the 
Walrus 
said, 


to 
speak 
of 
many 
things: 

有关如何实现这一点的任何想法?

在此先感谢您的帮助!

+0

它看起来既像你输出的已经把话当作是空白序列/制表符分隔的字符,但第二个输出有逗号后的单词或两个空行 - 但这在任何地方都没有提及。你能澄清吗? –

+0

@BenjaminW。正如您从输入文本中看到的,“说”和“到”之间有3个空格,这意味着它会在输出中为额外的空格留出额外的空白。这很奇怪,我知道,我不是100%肯定为什么它应该是这样的,但哦哦 – Swallows

回答

1

如果我正确地理解了目标,你应该能够通过使用tr把空格和制表符成线做它打破:

#!/bin/bash 

tr ' \t' '\n' <"$1" 
+0

这很有道理,谢谢你的帮助! – Swallows

相关问题