获取指定位置的字符

获取指定位置的字符

我有一个包含 64895 个字符的文件

In [95]: !wc -c 07.org                 
64895 07.org

我怎样才能获取位置 60000 处的字符?

答案1

如果文件有换行符,headtail可以使用和来查找特定字节。对于 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 的计数中,则此方法不起作用 ;))

相关内容