【问题标题】:Cat Command Not Reading All Data in Text FileCat 命令未读取文本文件中的所有数据
【发布时间】:2014-06-19 07:16:21
【问题描述】:

这是我尝试使用 bash 的第一天,所以对于这个可能很愚蠢的问题,我深表歉意....

我有一个 24 行 x 5 列的制表符分隔文本文件。例如,这里是前几行:

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

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

【问题讨论】:

  • 所以当你执行这个脚本时你会得到这个?看起来很奇怪。你是如何执行脚本的?
  • 问题。奇怪的行尾标记。使用十六进制编辑器/工具(例如hexdump -C)查看您的文件。
  • bash-3.2$ ./auto.sh rad97pt_24 p97_24 raddptdz97_24 dp97_24 rad97_24 w97_24bash-3.2$
  • 您使用的是 Windows 文件吗?在这种情况下,请尝试使用dos2unix 来“导入”该文件,以便在 UNIX 中对其进行正确处理。
  • 我通过在终端窗口中输入 cat filelist97.txt 得到相同的输出。

标签: bash cat


【解决方案1】:

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

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

如果这样可以解决问题,您应该考虑修复文件。

【讨论】:

  • 对我来说问题是行尾是 windows 格式 (CRLF),我在 ubuntu 系统中运行 cat
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2018-03-23
  • 1970-01-01
  • 2020-04-09
相关资源
最近更新 更多