Linux 如何计算只有一个字符的行数?
我正试图打印计数的行数,其中只有一个字符 我有一个有200k行的文件,其中一些行只有一个字符(任何类型的字符) 由于我没有经验,我在谷歌上搜索了很多文档,从不同的来源找到了这个混合解决方案:Linux 如何计算只有一个字符的行数?,linux,bash,zsh,Linux,Bash,Zsh,我正试图打印计数的行数,其中只有一个字符 我有一个有200k行的文件,其中一些行只有一个字符(任何类型的字符) 由于我没有经验,我在谷歌上搜索了很多文档,从不同的来源找到了这个混合解决方案: awk -F^\w$ '{print NF-1}' myfile.log 我原以为它会用单个字符过滤行,但它似乎有效 ^\w$ 然而,我并没有得到包含单个字符的行数。相反,您可以尝试以下方法: awk '/^.$/{++c}END{print c}' file 变量c对于仅包含1个字符(任何字符)的每
awk -F^\w$ '{print NF-1}' myfile.log
我原以为它会用单个字符过滤行,但它似乎有效
^\w$
然而,我并没有得到包含单个字符的行数。相反,您可以尝试以下方法:
awk '/^.$/{++c}END{print c}' file
变量c
对于仅包含1个字符(任何字符)的每行递增。文件解析完成后,将打印变量。您可以尝试以下操作:
awk '/^.$/{++c}END{print c}' file
变量c
对于仅包含1个字符(任何字符)的每行递增。文件解析完成后,将打印变量。如果非awk解决方案正常:
grep -c '^.$'
如果非awk解决方案正常:
grep -c '^.$'
在awk中,像您的
{print NF-1}
这样的规则对每一行执行。要为整个文件只打印一件东西,必须使用END{print…}
。在那里,你可以打印一个计数器,每当你看到一行只有一个字符时,你就可以增加这个计数器
但是,我会使用grep
,因为它更容易编写,执行速度更快:
grep -xc . yourFile
在awk中,像您的
{print NF-1}
这样的规则对每一行执行。要为整个文件只打印一件东西,必须使用END{print…}
。在那里,你可以打印一个计数器,每当你看到一行只有一个字符时,你就可以增加这个计数器
但是,我会使用grep
,因为它更容易编写,执行速度更快:
grep -xc . yourFile
定义什么是角色。今天那么,只有
€
或°
或Ê
的行是一个字符的行吗?它在换行符之前有多个字节。是的,在我的案例中,包含任何字符的行都算为单字符行,那么NUL
字符呢?/bin/ls
有多少个单字符行?这是一些可执行文件!也可以使用seq 20 | grep-c'^.$”
?@BasileStarynkevitch:如果LANG
设置正确,多字节字符不会出现问题。例如,echoあ|grep-c'^.$'
为我打印1。定义什么是字符。今天那么,只有€
或°
或Ê
的行是一个字符的行吗?它在换行符之前有多个字节。是的,在我的案例中,包含任何字符的行都算为单字符行,那么NUL
字符呢?/bin/ls
有多少个单字符行?这是一些可执行文件!也可以使用seq 20 | grep-c'^.$”
?@BasileStarynkevitch:如果LANG
设置正确,多字节字符不会出现问题。例如,echoあ|grep-c'^.$'
为我打印1。我们如何调整此解决方案,使其适用于“以单字符结尾的行?例如:此处的sometext和im the single char=@deuq.Um…所有在单字符中至少有一个字符结尾的行。是否希望最后一个字符用某些字符(例如空格)分隔?请将要求改为”第二个最后一个字符为空格的行"; 从那里grep-c'.$应该是显而易见的。但是,请不要中途改变你的问题,而是问一个新的问题。托马斯,@Socowi我感谢你的帮助,但是,我现在为自己感到羞愧,我将花更多的时间在文档上。这是此任务的解决方案。我们如何将此解决方案调整为“以单字符结尾的行?例如:此处的sometext和im the single char=@deuq.Um…所有至少以一个字符结尾的行都以单字符结尾。是否希望最后一个字符以某个字符(例如空格)分隔?请将要求改为”第二个最后一个字符是空格“from theregrep-c.”$.
的行应该是显而易见的。但是,请不要中途更改您的问题,而是问一个新的问题。Thomas,@Socowi我感谢您的帮助,但是,我为自己感到惭愧,现在我将花更多的时间在文档上。这是这项任务的解决方案。