计算给定行范围内包含子字符串的行数
Counting num of lines containing substring within a given range of lines
我试图在给定的行范围内查找文件中包含子字符串的行数。例如。最后 100 行,第 1 行到第 5 行等
目前我正在尝试做的范围:
sed -n '1,5p' >> file.csv
grep -c *"substring"* file.csv
这里</code>是原文件。我正在创建一个临时文件并将它们存储在那里。有一个更好的方法吗?因为我不确定这是否正常工作。</p>
<p>至于最后n行,我在做:</p>
<p><code>(tail -n 100 ) | grep -ic *"substring"*
这似乎不起作用。
想知道我哪里出错了吗?对于案例 sensitive/insensitive 场景,我将如何修改它。
您可以使用管道代替临时文件。 "" 外的 '*' 将匹配当前目录中的文件,这可能不是您想要的,因为 grep 已经可以在字符串中匹配,只需执行以下操作:
sed -n '1,5p' "" | grep -c "substring"
或者,使用 sed
过滤数据并使用 wc -l
计算行数:
sed -n '1,5 { /substring/p }' "" | wc-l
关于您的第一个问题,我认为您不需要创建临时文件并将结果通过管道传输到 grep
:
sed -n '1,5p' | grep -c "substring"
第二个问题,您可以在上面的答案中看到,您不应该在 grep 子字符串规范中使用星号。这不是必需的,因为 grep 总是匹配行中任何位置的子字符串,并且将它们放在您放置它们的位置会导致 bash
通配。
使用此 Perl 单行代码计算文件 </code> 中模式 <code>substring
的出现次数,第 1-5 行:
perl -ne 'print if $. >= 1 && $. <= 5 && /substring/' "" | wc -l
对于不区分大小写的搜索,将 i
修饰符添加到正则表达式中:
perl -ne 'print if $. >= 1 && $. <= 5 && /substring/i' "" | wc -l
Perl 单行代码使用这些命令行标志:
-e
: 告诉 Perl 查找内联代码,而不是在文件中。
-n
:一次循环输入一行,默认分配给 $_
。
$.
: 当前输入行号。
另请参见:
perldoc perlrun
: how to execute the Perl interpreter: command line switches
perldoc perlre
: Perl regular expressions (regexes)
我试图在给定的行范围内查找文件中包含子字符串的行数。例如。最后 100 行,第 1 行到第 5 行等
目前我正在尝试做的范围:
sed -n '1,5p' >> file.csv
grep -c *"substring"* file.csv
这里</code>是原文件。我正在创建一个临时文件并将它们存储在那里。有一个更好的方法吗?因为我不确定这是否正常工作。</p>
<p>至于最后n行,我在做:</p>
<p><code>(tail -n 100 ) | grep -ic *"substring"*
这似乎不起作用。
想知道我哪里出错了吗?对于案例 sensitive/insensitive 场景,我将如何修改它。
您可以使用管道代替临时文件。 "" 外的 '*' 将匹配当前目录中的文件,这可能不是您想要的,因为 grep 已经可以在字符串中匹配,只需执行以下操作:
sed -n '1,5p' "" | grep -c "substring"
或者,使用 sed
过滤数据并使用 wc -l
计算行数:
sed -n '1,5 { /substring/p }' "" | wc-l
关于您的第一个问题,我认为您不需要创建临时文件并将结果通过管道传输到 grep
:
sed -n '1,5p' | grep -c "substring"
第二个问题,您可以在上面的答案中看到,您不应该在 grep 子字符串规范中使用星号。这不是必需的,因为 grep 总是匹配行中任何位置的子字符串,并且将它们放在您放置它们的位置会导致 bash
通配。
使用此 Perl 单行代码计算文件 </code> 中模式 <code>substring
的出现次数,第 1-5 行:
perl -ne 'print if $. >= 1 && $. <= 5 && /substring/' "" | wc -l
对于不区分大小写的搜索,将 i
修饰符添加到正则表达式中:
perl -ne 'print if $. >= 1 && $. <= 5 && /substring/i' "" | wc -l
Perl 单行代码使用这些命令行标志:
-e
: 告诉 Perl 查找内联代码,而不是在文件中。
-n
:一次循环输入一行,默认分配给 $_
。
$.
: 当前输入行号。
另请参见:
perldoc perlrun
: how to execute the Perl interpreter: command line switches
perldoc perlre
: Perl regular expressions (regexes)