2017-04-11 11 views
1

に行ごとのファイルおよびプリント1単語を読む:bashの:これまでのところ私のコードはこれですSTDOUT

#!/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

あなたの出力の両方が既にブランクのシーケンスとして言葉を扱うように見えます/タブで区切られた文字ですが、2番目の出力にはカンマ付きの単語の後に1行または2行の空白行がありますが、どこにも言及されていません。明確にできますか? –

+0

@ベンジャミンW。入力テキストからわかるように、 "said"と "to"の間には3つの空白があり、余分な空白があると出力に余分な空白ができることを意味します。それは私が知っている奇妙なことです、私は100%ではないが、このようにすべき理由はよくわかります – Swallows

答えて

1

私はきちんと目標を理解していれば、あなたは改行にスペースとタブを有効にするtrを使用することによってそれを行うことができるようになります。

#!/bin/bash 

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

それは意味をなさない、あなたの助けに感謝! – Swallows

関連する問題