Cat命令无法读取文本文件中的所有数据

4
这是我第一天尝试使用bash,所以对于这个可能愚蠢的问题,我感到抱歉...。
我有一个由5列24行制成的以制表符分隔的文本文件。以下是前几行的示例:
rad97pt_1   p97_1   raddptdz97_1    dp97_1  rad97_1 w97_1
rad97pt_2   p97_2   raddptdz97_2    dp97_2  rad97_2 w97_2
rad97pt_3   p97_3   raddptdz97_3    dp97_3  rad97_3 w97_3

我尝试使用cat命令来显示文本文件中的所有数据。这是我在vi编辑器中编写的代码:

#!/bin/bash
cat filelist97.txt

我的输出结果是:

rad97pt_24      p97_24  raddptdz97_24   dp97_24  rad97_24 w97_24

为什么只有文本文件的最后一行被输出?再次感谢您的帮助!

2
当你执行这个脚本时,你只得到了这个?看起来很奇怪。你是如何执行这个脚本的? - fedorqui
2
可能是奇怪的行尾标记。用十六进制编辑器/工具(例如hexdump -C)查看你的文件。 - Mat
bash-3.2$ ./auto.sh rad97pt_24 p97_24 raddptdz97_24 dp97_24 rad97_24 w97_24 - user3521263
1
你是否在使用Windows文件?如果是这样,请尝试使用“dos2unix”将文件“导入”,以便可以在UNIX中正确处理它。 - fedorqui
在终端窗口中键入cat filelist97.txt,我会得到相同的输出。 - user3521263
尝试使用 cat -v filelist97.txt 命令来更好地了解文件中实际的内容。 - Keith Thompson
2个回答

13
我猜想你的文件中每行都以回车符(\r字符)结尾,而后面没有新行符。这会导致每一行都被下一行覆盖,因此你只能看到最后一行。尝试执行以下操作:

 tr '\r' '\n' <filelist97.txt

如果这解决了问题,你应该考虑修复这个文件。


对我来说问题在于行尾是Windows格式(CRLF),而我正在Ubuntu系统中运行cat - Med Zamrik

0

在接受的答案未能提供结果后,我通过homebrew下载了dos2unix

brew install dos2unix

该应用程序将报告文本文件的行尾,并允许您更改它们。

在我的情况下,以下dos2unix命令识别了行尾:

dos2unix -i /Users/john/Desktop/files.txt

而这个命令则更改了行尾:

mac2unix /Users/john/Desktop/files.txt


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接