我有两个文件,我正在将它们连接成一个单独的文件,但我也在两个文件之间添加用户输入。问题是,在第一个文件后插入了一个换行符,其余部分按预期工作。
touch newFile
cat file1 > newFile
echo -n $userInput >> newFile
cat file2 >> newFile
如何在将file1添加到newFile时防止或移除换行符? 如果我使用cat file1
,似乎会有一个由cat
添加的换行符,但是我看到的关于cat
的所有内容都说它不会这样做。如果我使用vim file1
,文件末尾没有空白行,这表明换行符是文件的一部分,因此cat
实际上可能正在添加一个换行符,或者重定向符号>
正在这样做,或者echo
在其输出开头添加了一个换行符,而这些情况都不希望发生在这种情况下。我看到的一个解决方案是使用
cat file1 | tr -d '\n'
但是这会丢弃文件中的所有换行符,也不理想。因此,重申我的问题:
我如何将file1
复制到新文件中并添加用户输入,而不在它们之间添加换行符?
(cat
不是必需品,但我不熟悉printf
,所以如果那是解决方案,请详细说明其用途)。
printf '%s' "$userInput"
比echo -n "$userInput"
更可靠;如果您查看POSIX规范中的echo
,您会注意到-n
使行为实现定义,并且标准的APPLICATION USAGE
部分建议使用printf
代替任何带有反斜杠转义序列的echo -n
或任何echo
调用。 - Charles Duffy