AbstProcDo Asked: 2019-11-19 23:44:11 +0800 CST2019-11-19 23:44:11 +0800 CST 2019-11-19 23:44:11 +0800 CST 获取指定位置的字符 772 我有一个包含 64895 个字符的文件 In [95]: !wc -c 07.org 64895 07.org 我怎样才能得到位置 60000 的角色? bash 2 个回答 Voted JonDeg 2019-11-20T00:10:27+08:002019-11-20T00:10:27+08:00 如果文件有换行符,则head和tail可用于查找特定字节。对于 ascii 字符的文件,chars 等价于字节,但非 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 是换行符。 Best Answer Rinzwind 2019-11-19T23:53:03+08:002019-11-19T23:53:03+08:00 有这个cut命令: tr -d '\n' < 07.org | cut -c60000 第一部分删除换行符;然后第二部分打印第 60000 个字符(但会跳过换行符,因此如果需要将这些字符包含在 60000 的计数中,这将不起作用;))
如果文件有换行符,则
head
和tail
可用于查找特定字节。对于 ascii 字符的文件,chars 等价于字节,但非 ascii unicode 字符占用多个字节。此外,还会计算换行符。要获取位置 60000 处的字节:为了了解它是如何工作的,下面的循环查看前 9 个字节:
字节 4 和 7 是换行符。
有这个
cut
命令:第一部分删除换行符;然后第二部分打印第 60000 个字符(但会跳过换行符,因此如果需要将这些字符包含在 60000 的计数中,这将不起作用;))