我有一个包含 64895 个字符的文件
In [95]: !wc -c 07.org
64895 07.org
我怎样才能获取位置 60000 处的字符?
答案1
如果文件有换行符,head
则tail
可以使用和来查找特定字节。对于 ASCII 字符文件,字符相当于字节,但非 ASCII Unicode 字符占用多个字节。此外,换行符也计算在内。要获取位置 60000 处的字节:
$ head -c 60000 file.txt | tail -c -1
为了了解其工作原理,以下循环查看前 9 个字节:
$ # First the data layout
$ echo $'123\n56\n89'
123
56
89
$ # Now get the first 9 bytes in turn
$ for i in `seq 9`; do c=`echo $'123\n56\n89' | head -c $i | tail -c -1` ; echo "$i => |$c|"; done
1 => |1|
2 => |2|
3 => |3|
4 => ||
5 => |5|
6 => |6|
7 => ||
8 => |8|
9 => |9|
字节 4 和 7 是换行符。
答案2
有一个cut
命令用于此:
tr -d '\n' < 07.org | cut -c60000
第一部分删除换行符;然后第二部分打印第 60000 个字符(但会跳过换行符,因此如果需要将其包括在 60000 的计数中,则此方法不起作用 ;))