Answers:
与sed
:
$ echo 12345 | sed 's/.\{4\}\(.\).*/\1/;q'
5
$ echo 1234ắ | sed 's/.\{4\}\(.\).*/\1/;q'
ắ
请注意,sed
如果您输入的当前语言环境中包含无效的多字节字符,则将无法产生输出。LC_ALL=C
如果仅使用单字节字符,则可以使用。
对于ASCII文件,您还可以使用dd
:
$ echo 12345 | dd bs=1 skip=4 count=1 2>/dev/null
5
sed 's/.\{4\}\(.\).*/\1/;q' file
如果要第5个字节,则从1开始计数:
dd ibs=1 skip=4 count=1
要么
tail -c +5 | head -c 1
请注意,该tail
计数从1开始,因此给定包含的文件abcdefg
,此输出为e
。
dd
并且tail -c
在POSIX中。head -c
很常见,但在POSIX中不常见;它位于GNU coreutils,BusyBox,FreeBSD和NetBSd中,但不在OpenBSD或Solaris中。
cat file | tail -c +5 | head -c 1