如何使用 Perl 在文件中查找扩展 ASCII 字符?
如何使用 Perl 在文件中查找扩展 ASCII 字符? 谁能拿到剧本吗?
.....提前致谢.....
How can I find extended ASCII characters in a file using Perl? Can anyone get the script?
.....thanks in advance.....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
由于扩展的 ASCII 字符具有值 128 及更高,您只需调用 ord 单个字符并处理那些值 >= 128 的字符。以下代码从 stdin 读取并仅打印扩展 ASCII 字符:
或者,解压 与 chr< /a> 也可以工作。 示例:(
我确信某些 Perl 大师可以将这两者压缩为两个单行代码...)
要打印行号,您可以使用以下内容(这不会删除重复项,并且在使用 unicode 时会出现奇怪的行为已通过):(
感谢 Yaakov Belch 提供的
$.
提示。)Since the extended ASCII characters have value 128 and higher, you can just call ord on individual characters and handle those with a value >= 128. The following code reads from stdin and prints only the extended ASCII characters:
Alternatively, unpack together with chr will also work. Example:
(I'm sure some Perl guru can condense both of these to two one-liners...)
To print the line numbers instead, you can use the following (this does not remove duplicates, and will have odd behaviour when unicode is passed):
(Thanks Yaakov Belch for the
$.
tip.)第一个可打印 ASCII 字符是
空格
(32)。 最后一个可打印的 ASCII 字符是~
(126)。 所以我可能会使用,尽管不可否认,它也会显示包含控制字符和扩展 ASCII 的行。
编辑:更改为打印行号而不是行本身。
The first printable ASCII character is
space
(32). The last printable ASCII character is~
(126). So I'd probably usealthough it will, admittedly, also display lines containing control characters as well as extended ASCII.
Edit: Changed to print the line number rather than the line itself.
Oneliner:
适用于较旧的 Perl 版本
Oneliner:
for older perl versions
一个关键的问题是是否
使用字节;
pragma 应该有效。 海报应该决定这一点。 要选取代码大于 127 的字符,以下内容就足够了:
或
A crucial question is whether the
use bytes;
pragma should be in effect. The poster should decide that. For picking characters with codes greater than 127, the following will suffice:
or
Hynek -Pichi- Vychodil 的回答:
只测试非打印的有限部分,大概应该是
相反。
Hynek -Pichi- Vychodil's answer:
only tests a limited part of the non-printing should presumably be
instead.
grep 怎么样?
What about grep?