问题:
我需要匹配邮寄机软件程序的确切格式。它期望特定的格式。我可以使用工具计算换行符、回车符、制表符等的数量。
cat -vte
而且
od -c
And(并且)
wc -l ( or wc -c )
然而,我想知道字符和文本段之间以及首尾空格的确切数量,包括制表符。
问题:
您会如何使用常见的Unix工具+Perl或Python分析并精确匹配模板?是否有一行代码可以完成?此外,您对于匹配DOS编码文件有什么建议?是先将其转换为NIX格式再进行分析,还是保留原样?
更新:
使用以下命令查看单个空格[假定文件中没有'%'字符]:
sed 's/ /%/g' filename.000
计划构建一个脚本,分析每行的制表符和空格内容。
使用 @shiplu 的解决方案,并向反对 cat 的人致敬。
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
空格
字符的数量吗? - Shiplu Mokaddim