如何在 bash 中转换文本文件? (foo.txt 到 bar.txt)
我正在尝试使用 foo.txt >> 通过 bash 将一个文本文件附加到另一个文本文件酒吧.txt。问题是, foo.txt 是一个 Windows 文本文件(我认为),因为一旦附加到 bar.txt 中
every new^M
line^M
ends^M
like this.^M
,因此,它们肯定是两种不同的文件类型。
我已在 Google 上搜索答案,但 Google 不接受“>>”等特殊字符和搜索中的“^”。我能找到的最接近的解决方案是 commandlinefu.com 上报告的解决方案,但它所做的只是从 bar.txt 中删除 r,这实际上根本不是解决方案。
所以,我这里有两个问题:
- 如何使用 bash 发现 foo.txt 到底是什么文件类型?
- 如何正确转换 foo.txt 以使其可附加到 bar.txt?
I'm trying to append, via bash, one text file to another using foo.txt >> bar.txt
. The problem is, foo.txt is a windows text file (I think), because once appended in bar.txt
every new^M
line^M
ends^M
like this.^M
Thus, they are surely two different file-types.
I've searched Google for answers but Google doesn't accept special characters like ">>" and "^" in search. The closest solution I can find is a reported solution on commandlinefu.com, but all it does is strip the r's from bar.txt which, really, is no solution at all.
So, I have two questions here:
- How do I discover, using bash, what file-type foo.txt really is?
- How do convert foo.txt properly to make it appendable to bar.txt?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
或者使用
dos2unix
(如果可用)。or use
dos2unix
, if it's available.使用
dos2unix
转换 Windows 行结尾:Convert the Windows line endings with
dos2unix
:文件 foo.txt
将输出:“ASCII 文本,带有 CRLF 行终止符”。file foo.txt
will output: "ASCII text, with CRLF line terminators" if the file has DOS-style line endings.使用
fromdos
和todos
,或者unix2dos
和dos2unix
。Use
fromdos
andtodos
, orunix2dos
anddos2unix
.查找命令
dos2unix
和unix2dos
。您可能希望先复制一份 (cp
)Look up the commands
dos2unix
andunix2dos
. You may wish to make a copy first (cp
)一个快速而肮脏的解决方案:
A quick-and-dirty solution: