【问题标题】:Can't use Linux wc on one-line file无法在单行文件上使用 Linux wc
【发布时间】:2018-04-20 00:52:33
【问题描述】:

我有一个单行文件,行尾没有换行符。当我运行以下命令时:

diff oneline-file.txt any-file.txt | wc -c

我明白了:

Warning: missing newline character in oneline-file.txt

为什么这是一个错误?我该如何解决?我可以先这样做:

echo "\n" >> oneline-file.txt

我宁愿做一些不改变文件的事情。谢谢。

【问题讨论】:

  • 只是警告,不影响结果。
  • 这是什么版本的diff?我没有收到那个警告,但输出有 \ No newline at end of file
  • echo "\n" 不会回显换行符,它会回显该文字字符串。
  • 你用的是什么发行版?

标签: linux command diff wc


【解决方案1】:

感谢巴尔玛。这引导我朝着正确的方向前进。这是我使用的:

diff <(sed 's/$/\n/g' oneline-file.txt) <(cat any-file.txt) | wc -c 

【讨论】:

    【解决方案2】:

    您可以将echo 的结果通过管道传输到diff,将文件名作为diff 的参数替换为-(告诉它从标准输入获取输入)。

    【讨论】:

      【解决方案3】:

      您可以使用进程替换来回显文件后的换行符:

      diff <(cat oneline-file.txt; echo "") any-file.txt | wc -c
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-21
        • 1970-01-01
        • 2021-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多