问题:
我需要匹配邮件机器软件程序的确切格式。 它期望一定的格式。 我可以统计新的行数,回车,标签等等。 使用类似的工具
cat -vte
和
od -c
和
C ++在窗口上输出文本
为什么与Windows相比,Mac上可用的唯一颜色数量不同?
如何在Windows上使用Python处理包含EOF / Ctrl-Z字符的大型文本文件?
wc -l ( or wc -c )
但是,我想知道字符和文本部分之间的前导和尾随空格的确切数量。 选项卡也是如此。
题:
你将如何去分析然后准确地使用普通的unix工具+ perl或python匹配模板? 单线船首选。 此外,你有什么build议匹配DOS编码的文件? 你会先把它翻译成NIX,然后分析还是离开?
UPDATE
使用这个来查看单个空格[在文件中没有'%'字符]:
sed 's/ /%/g' filename.000
使用@ shiplu的解决scheme点头反猫的人群:
while read l;do echo $l;echo $((`echo $l | wc -c` - `echo $l | tr -d ' ' | wc -c`));done<filename.000
仍然需要一些Windows的调整,但它的方式很好。
示例文本
阅读的关键:
标有 n的换行符
回车标记为 r
用[:space:]标记的未知空格/制表符(需要依赖这些字符)
rn n [:space:]Institution Anon LLCrn [:space:]123 Blankety Strn [:space:]Greater Abyss,AK 99999rn n n [:space:] 10/27/2011rn [:space:]Requested materials are available for pickup:rn [:space:]e__r[:space:] D_ r[:space:] _Orn [:space:]Bathtime for BonZo[:space:] 45454545454545[:space:] 10/27/2011rn [:space:]Bathtime for BonZo[:space:] 45454545454545[:space:] 10/27/2011rn n n n n n n [:space:] Pantz McManlissrn [:space:] Gibberish Avern [:space:] northern Mirkwood,ME 99999rn ( untold variable amounts of n chars go here )
更新2
使用带有阅读的IFS给出了类似的结果,下面的人发布的ruby。
while IFS='' read -r line do printf "%sn" "$line" | sed 's/ /%/g' | grep -o '%' | wc -w done < filename.000
使用awk修改文本
如何按第三列中的数字对数据进行sorting?
如何编辑300 GB的文本文件(基因组数据)?
是否有任何技巧来计算文本文件中的行数?
如何在Linux中的多行查找和replace文本?
perl -nwE 'print; for my $s (/([t ]+)/g) { say "Count: ",length $s }' input.txt
这将统计标签或空间的单个组,而不是计算整个行中的所有空白。 例如:
foo bar
将打印
foo bar Count: 4 Count: 8
您可能希望跳过单个空格(单词之间的空格)。 即不要指望Bathtime for BonZo在Bathtime for BonZo的空间。 如果是这样,用{2,}替换+或任何你认为合适的最小值。
perl -nlE'say 0+( () = /s/g );'
与当前接受的答案不同,这不会将输入拆分为字段,从而丢弃结果。 它也不会不必要地创建一个数组来计算列表中的值的数量。
习惯用法:
0+( ... )强加标量上下文(如scalar( ... ) ,但它更清晰,因为它告诉读者一个数字是预期的。
标量上下文中的列表赋值返回RHS返回的元素的数量,所以0+( () = /.../g )给出匹配次数() = /.../g 。
-l与-n使用会导致输入被“chomped”,所以这会从计数中删除换行符。
如果您只对空格(U + 0020)和制表符(U + 0009)感兴趣,则以下内容更快更简单:
perl -nE'say tr/ t//;'
在这两种情况下,都可以通过STDIN或通过参数命名的文件传递输入。
在Perl或Python中的正则表达式将是这里的方式。
Perl正则表达式
Python正则表达式
正则表达式备忘录
是的,可能需要第一时间学习“perl,schmerl,zwerl”,但是一旦你获得了像正则表达式这样的非常强大的工具的经验,它可以为您节省大量的时间。
计数空白:
sed 's/[^ ]//g' FILE | tr -d "n" | wc -c
文字之前,之后和之间。 你想在同一个行程中统计换行符,制表符等,然后总结出来,还是分开一步?
如果要计算pm.txt的space数量,则该命令将执行,
cat pm.txt | while read l; do echo $((`echo $l | wc -c` - `echo $l | tr -d ' ' | wc -c`)); done;
如果你想要计算space的数量, r , n , t使用这个,
cat pm.txt | while read l; do echo $((`echo $l | wc -c` - `echo $l | tr -d ' rnt' | wc -c`)); done;
read将剥离任何主角。 如果你不想要的话,有一个讨厌的方法。 首先拆分文件,使每个文件只有一行
`split -l 1 -d pm.txt`.
之后,会有一堆x*文件。 现在循环通过它。
for x in x*; do echo $((`cat $x | wc -c` - `cat $x | tr -d ' rnt' | wc -c`)); done;
如果Ruby计数(它确实计数
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。