获取指定位置的字符

Abs*_*cDo 3 bash

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

In [95]: !wc -c 07.org                 
64895 07.org
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到位置 60000 的字符?

Jon*_*Deg 6

如果文件有换行符,则head和tail可用于查找特定字节。对于 ascii 字符的文件,chars 相当于字节,但非 ascii unicode 字符占用多个字节。此外,还计算换行符。要获取位置 60000 处的字节:

$ head -c 60000 file.txt | tail -c -1
Run Code Online (Sandbox Code Playgroud)

要了解其工作原理,以下循环查看前 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|
Run Code Online (Sandbox Code Playgroud)

字节 4 和 7 是换行符。


Rin*_*ind 5

有这样的cut命令:

tr -d '\n' <  07.org | cut -c60000 
Run Code Online (Sandbox Code Playgroud)

第 1 部分删除换行符;第二部分然后打印第 60000 个字符(但会跳过换行符,因此如果需要将这些字符包含在 60000 的计数中,这将不起作用;))