Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 不是空文件,而是;wc-l";产出0_Bash_File - Fatal编程技术网

Bash 不是空文件,而是;wc-l";产出0

Bash 不是空文件,而是;wc-l";产出0,bash,file,Bash,File,我有一个非空文件(即使是一个大文件,400Ko),我可以用更少的读取 但是如果我尝试用wc-l/path/to/file输出行数,它将输出0 这怎么可能呢?wc统计文件中的'\n'字符数。可能是您的文件不包含一个吗 以下是GNU来源: 查找计数(c)宏 这是一种可能的方法。创建一个400k文件,其中仅包含空值: dd if=/dev/zero bs=1024 count=400 of=/tmp/nulls ; ls -log /tmp/nulls 输出显示文件存在: 400+0 recor

我有一个非空文件(即使是一个大文件,
400Ko
),我可以用
更少的
读取

但是如果我尝试用
wc-l/path/to/file
输出行数,它将输出
0


这怎么可能呢?

wc统计文件中的'\n'字符数。可能是您的文件不包含一个吗

以下是GNU来源:


查找计数(c)宏

这是一种可能的方法。创建一个400k文件,其中仅包含空值:

dd if=/dev/zero bs=1024 count=400 of=/tmp/nulls ; ls -log /tmp/nulls 
输出显示文件存在:

400+0 records in
400+0 records out
409600 bytes (410 kB, 400 KiB) copied, 0.00343425 s, 119 MB/s
-rw-rw-r-- 1 409600 Feb 28 11:12 /tmp/nulls
现在数一数行:

wc -l /tmp/nulls
0 /tmp/nulls

如果HTML文件是可用的,则是可能的。在内容缩小期间,换行符将被删除

尝试使用
文件
命令

file filename.html

filename.html: HTML document text, UTF-8 Unicode text, with very long lines, with no line terminators

您可以自己验证文件是否不包含换行符/换行符(ASCII 10)字符,这将导致
wc-l
报告0行

  • 首先,计算文件中的字符数:

    wc -c /path/to/file
    
    你应该得到一个非零值

  • 现在,过滤掉所有不是换行符的内容:

    tr -dc '\n' /path/to/file | wc -c
    
    你应该回到0

  • 或者,删除换行符并计算结果

    tr -d '\n' | wc -c
    
    您应该返回与步骤1中相同的值


  • 你在那个文件里有正确的权限吗?请尝试使用sudo或具有root权限的帐户。我猜您的文件是在windows/dos中生成的,并且它包含dos换行符,
    wc
    无法检测到。首先进行转换。
    wc
    计算换行数-可能是一行。
    wc
    没有
    -l
    选项的输出是什么?
    wc-L
    的输出是什么?@Simon请报告
    文件yourFile
    @Kent,Re“less”:
    hextump-C/tmp/nulls | less
    。关于“html”:
    sensible browser/tmp/nulls
    清楚地显示了它。不,当然你是对的,这可能是Dos新行,但这个答案显示了最简单的400K实例。