【发布时间】:2012-01-30 18:59:27
【问题描述】:
问题:
我需要为邮件机软件程序匹配一个确切的格式。它需要某种格式。我可以计算新行、回车、制表符等的数量。使用诸如
之类的工具cat -vte
和
od -c
和
wc -l ( or wc -c )
但是,我想知道字符之间的前导和尾随空格的确切数量 和文本部分。选项卡也是如此。
问题:
您将如何分析然后使用通用 unix 精确匹配模板 工具 + perl 还是 python?首选单线。另外,你对匹配有什么建议 DOS编码文件?你会先把它翻译成 NIX,然后再分析,还是照原样离开?
更新
使用它查看单个空格 [假定文件中没有 '%' 字符]:
sed 's/ /%/g' filename.000
计划构建一个脚本来分析每一行的制表符和空格内容。
使用@shiplu 的解决方案向反猫人群致敬:
while read l;do echo $l;echo $((`echo $l | wc -c` - `echo $l | tr -d ' ' | wc -c`));done<filename.000
仍然需要对 Windows 进行一些调整,但它正在顺利进行中。
示例文本
阅读关键:
用 \n 标记的换行符
用\r标记的回车
标有 [:space:] 的未知空格/制表符(需要考虑这些)
\r\n
\n
[:space:]Institution Anon LLC\r\n
[:space:]123 Blankety St\r\n
[:space:]Greater Abyss, AK 99999\r\n
\n
\n
[:space:] 10/27/2011\r\n
[:space:]Requested materials are available for pickup:\r\n
[:space:]e__\r[:space:] D_ \r[:space:] _O\r\n
[:space:]Bathtime for BonZo[:space:] 45454545454545[:space:] 10/27/2011\r\n
[:space:]Bathtime for BonZo[:space:] 45454545454545[:space:] 10/27/2011\r\n
\n
\n
\n
\n
\n
\n
[:space:] Pantz McManliss\r\n
[:space:] Gibberish Ave\r\n
[:space:] Northern Mirkwood, ME 99999\r\n
( untold variable amounts of \n chars go here )
更新 2
将 IFS 与 read 结合使用会得到与下面某人发布的 ruby 类似的结果。
while IFS='' read -r line
do
printf "%s\n" "$line" | sed 's/ /%/g' | grep -o '%' | wc -w
done < filename.000
【问题讨论】:
-
你要统计
space的字符数吗?? -
是的。我认为我走在正确的轨道上。使空格和制表符可见,唯一...然后计数。我想我在下面看到有人有同样的想法。
-
你检查我的答案了吗?
-
非常接近,但需要逐行分析。
-
我觉得有一个循环来了。
标签: regex linux perl shell text