なぜ余分な空白行がありますか? [コピー]

なぜ余分な空白行がありますか? [コピー]

スペースで区切られた水平データがあります。

0 2 32 323 443 ...

水平にリストされたファイルを垂直にリストされたファイルに変換してソートするシェルスクリプトを作成しました。

filename=/tmp/vList
colcount=$(wc -w < "$1")
counter=1
sortResult=0

while [ "$counter" -le "$colcount" ] 
do
cat "$1" | cut -d " " -f"$counter">>"$filename"
counter=$((counter+1))
done

動作しますが、水平リストの各値の間に空の行を含む垂直リストを作成します。


0

2

32

323

空行が表示される理由とこれを防ぐ方法は何ですか?

[編集] IsaaCの提案の後、私の質問は以前の質問と重複して似ており、同じ答えであることを発見してこの質問を閉じる必要があります。すべての貢献者に感謝します。

答え1

次の方法でこれを実行できますtr

tr ' ' '\n' < file

たとえば、

% cat file
0 2 32 323 443
% tr ' ' '\n' < file
0
2
32
323
443

答え2

perl -pne "s/ /\n/g" filename

出力

0
2
32
323
443

答え3

これはあなたが望む純粋なシェルスクリプトであると確信していますか?

grep -o '\S\+' input.file

または

sed 's/[[:blank:]\n]\+/\n/g' input.file

または

awk -v RS='([[:blank:]\n]+)' '1' input.file

または

awk '{ for(i=1;i<=NF;i++) print $i }' input.file

...もっと正確かもしれません。

答え4

より良い方法:

#!/bin/bash
filename="/tmp/vList"
for i in $(cat "$filename") ; do
    echo "$i"
fi

関連情報