一行打印文件内容

问题描述 投票:0回答:4

我完全迷失了尝试做一些我认为非常简单的事情:逐行读取文件并在一行上输出所有内容。

我在 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"
时出现问题。

有什么想法吗?

bash
4个回答
2
投票

另一个答案:

tr '[:space:]' ' ' < file
echo

这也必须是最安全、最有效的。如果您只想转换新行而不是任何空格,请使用

\n


1
投票

您可以使用:

echo -- $(<test.in); echo 'Done'

one two three four
Done

0
投票


echo -- `cat file` | tail -c +4

--
是为了保护您免受命令行选项的影响。但在我的 shell 中,
--
被打印出来。我认为这可能是一个错误。必须检查一下。

因此您需要检查是否必须在实现中包含

| tail -c +4


0
投票
paste -s <file_name>

paste -s 将串行打印文件内容(单行)。

© www.soinside.com 2019 - 2024. All rights reserved.