我完全失去了尝试做一些我认为非常简单的事情:逐行读取文件并将所有内容输出到一行。
我在RHEL上使用bash。
考虑一个带有文件(test.in)的简单测试用例,其中包含以下内容:
one
two
three
four
我想要一个读取此文件和输出的脚本:
one two three four
Done
我试过这个(test.sh):
cat test.in | while read in; do
printf "%s " "$in"
done
echo "Done"
结果如下:
# ./test.sh
foure
Done
#
似乎printf导致光标在%s后立即跳转到同一行的第一个位置。在执行echo -e "$in \c"
时,问题仍然存在。
有什么想法吗?
答案 0 :(得分:1)
您可以使用:
echo -- $(<test.in); echo 'Done'
one two three four
Done
答案 1 :(得分:0)
echo -- `cat file` | tail -c +4
--
是为了保护您免受命令行选项的影响。但是在我的shell中打印出--
。我认为这可能是一个错误。将不得不检查。
因此,您需要检查是否必须在实施中加入| tail -c +4
。
答案 2 :(得分:-1)
另一个答案:
tr '[:space:]' ' ' < file
echo
这也必须是最安全和最有效的。如果您只想转换新行而不是任何空格,请使用\n
。