Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何计算只有一个字符的行数?_Linux_Bash_Zsh - Fatal编程技术网

Linux 如何计算只有一个字符的行数?

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个字符(任何字符)的每

我正试图打印计数的行数,其中只有一个字符

我有一个有200k行的文件,其中一些行只有一个字符(任何类型的字符)

由于我没有经验,我在谷歌上搜索了很多文档,从不同的来源找到了这个混合解决方案:

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 there
grep-c.”$.
的行应该是显而易见的。但是,请不要中途更改您的问题,而是问一个新的问题。Thomas,@Socowi我感谢您的帮助,但是,我为自己感到惭愧,现在我将花更多的时间在文档上。这是这项任务的解决方案。