如何仅在文件的一行中获取字节数?

chr*_*ris 6 text-processing newlines wc

我想知道如何在文件的一行中获取字节数。

我知道我可以wc -l用来获取文件中的行数,以及wc -c获取文件中的总字节数。但是,我想要的是仅在文件的一行中获取字节数。

我怎么能做到这一点?

Ste*_*itt 14

sed -n 10p myfile | wc -c
Run Code Online (Sandbox Code Playgroud)

将计算第十行中的字节数myfile(包括换行符/换行符)。

可读性稍差的变体,

sed -n "10{p;q;}" myfile | wc -c
Run Code Online (Sandbox Code Playgroud)

(or sed '10!d;q'or sed '10q;d') 将在第十行之后停止读取文件,这对于较长的文件(或流)会很有趣。(感谢Tim KennedyPeter Cordes进行的讨论。)

在一个巨大的文件中,猫 X 行到 Y 行中提取文本行的不同方法的性能比较。

  • @TimKennedy 在请求的行之后直接退出,因为在您的变体中会更好地处理大文件!我认为这里有一个关于基准的问题。 (4认同)
  • 马上戒烟的好点子。sed 不会试图弄清楚给定的 sed 命令是否会打印更多输出。`是| sed -n '10{p;q} | wc -c` 具有很好的可读性和性能组合。它在看到第 10 行后立即退出。`是 | sed -n 10p | wc -c` 永远运行。 (2认同)

jay*_*ren 6

尝试这个:

line=10
tail -n "+$line" myfile | head -n 1 | wc -c
Run Code Online (Sandbox Code Playgroud)

设置line为您需要计算的行号。


Kev*_*vin 5

使用更直接一点awk

awk 'NR==10{print length($0)}' myfile
Run Code Online (Sandbox Code Playgroud)