Linux命令(如cat)读取指定数量的字符

pbr*_*ult 109 linux command-line

是否有类似catLinux 的命令可以从文件中返回指定数量的字符?

例如,我有一个文本文件,如:

Hello world
this is the second line
this is the third line
Run Code Online (Sandbox Code Playgroud)

我想要的东西会返回前5个字符,这将是"你好".

谢谢

Dan*_*Dan 179

head 也有效:

head -c 100 file  # returns the first 100 bytes in the file
Run Code Online (Sandbox Code Playgroud)

..将提取前100个字节并返回它们.

使用head这个的好处是tail匹配的语法:

tail -c 100 file  # returns the last 100 bytes in the file
Run Code Online (Sandbox Code Playgroud)


小智 45

您可以使用dd提取任意块的字节.

例如,

dd skip=1234 count=5 bs=1
Run Code Online (Sandbox Code Playgroud)

将字节1235到1239从其输入复制到其输出,并丢弃其余部分.

要从标准输入中获取前五个字节,请执行以下操作:

dd count=5 bs=1
Run Code Online (Sandbox Code Playgroud)

请注意,如果要指定输入文件名,则dd具有旧式参数解析,因此您可以执行以下操作:

dd count=5 bs=1 if=filename
Run Code Online (Sandbox Code Playgroud)

还要注意dd详细宣布它做了什么,所以为了抛弃它,做:

dd count=5 bs=1 2>&-
Run Code Online (Sandbox Code Playgroud)

要么

dd count=5 bs=1 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

  • 我建议一般不要使用这个解决方案,因为`dd bs = 1`强制dd一次读写一个字符,当count很大时,它比`head`要慢得多.但是,对于count = 5,它并不明显. (2认同)
  • 那么"dd count = 1 bs = 5"怎么样?这将一次读取五个字节.不过,头脑可能是一个更清晰的解决方案. (2认同)

gim*_*mel 11

:

名称

head - 输出文件的第一部分

概要

[ 选项 ] ... [ 文件 ] ...

描述

将每个FILE的前10行打印到标准输出.如果有多个FILE,则每个文件前面都有一个标题,表示文件名.如果没有FILE,或者FILE是 - ,则读取标准输入.

对于空头期权而言,长期期权的强制性论据也是强制性的.
-c, - times = [ - ] N 打印每个文件的前N个字节; 使用前导' - ',打印除了每个文件的最后N个字节之外的所有字节