linux - Bash:将`cat`重定向到没有换行符的文件
问题描述
我确信这个问题已经在某个地方得到了回答,但是在搜索它时,我找不到我的确切情况。我有两个文件要连接成一个文件,但我也在两个文件之间添加用户输入。问题是在第一个文件之后插入了换行符,其余部分按需要工作。
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'
但这会丢弃文件中的所有换行符,这也是不可取的。所以,重复我的问题:
如何cat file1
进入新文件并添加用户输入而不在它们之间添加换行符?
(cat
不是必需的,但我不熟悉printf
,所以如果这是解决方案,请详细说明其用途)。
解决方案
使用这些输入:
userInput="Test Test Test"
echo "Line 1
Line 2
Line 3" >file1
echo "Line 4
Line 5
Line 6" >file2
我会做:
printf "%s%s%s" "$(cat file1)" "$userInput" "$(cat file2)" >newfile
创建>newfile
相当于touch
在您的第一步中添加内容。这样做更容易看出意图。
我得到:
$ cat newfile
Line 1
Line 2
Line 3Test Test TestLine 4
Line 5
Line 6
推荐阅读
- regex - 使用正则表达式捕获 HTML 注释但忽略某个注释
- arrays - 使用 Volley 库的 Android 中的 JSON 解析问题
- vue.js - 如何构建我的商店并处理嵌套数据?
- sonarqube - 如何指定声纳扫描仪来获取我下载为 xml 的特定质量配置文件?
- google-cloud-platform - 如何在 Google Cloud Console 中访问 Google Cloud 实例?
- firebase - 错误:函数崩溃。详细信息:提供给 sendToDevice() 的注册令牌必须是非空字符串或非空数组
- windows - 在我的 Windows 系统上运行 pyspark 发生 Py4JJavaError
- angular - 'angular-6-social-login-v2' 会在 Ionic 3 中工作吗?
- python - 将已经包含在引号中并由换行符分隔的字符串的文本语料库转换为单个列表中的单个字符串?
- c++ - 如何修复从文件中读取并使用while循环存储在数组中的错误值?