为什么会出现多余的空行?

为什么会出现多余的空行?

我有一个以空格分隔的水平数据:

0 2 32 323 443 ...

我创建了一个 shell 脚本来将水平列出的文件转换为垂直列出的文件以对其进行排序:

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

你确定这是你想要的纯shell脚本吗?

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

相关内容