繁体   English   中英

如何在 Linux 终端中使用 grep 命令获取四个字母的单词列表?

[英]How can I get a list of four letter words using the grep command in the Linux terminal?

我需要在 Linux shell 中使用 grep 命令获取四字母单词的数量。 我的想法是创建一个由四个字母组成的单词列表,然后使用带有| wc -l的管道| wc -l | wc -l

我对 Linux 还很陌生,但我尝试了以下方法:

cat your_file | grep -c '^[ \t]*[a-zA-Z]\{5\}[ \t]*$'

grep -o -w "\w\{5\}" your_file

使用这个 Perl 单行:

perl -lne 'print for /\b([A-Za-z]{4})\b/g' in_file

例子:

echo 'ABCD abcd abcd1 abcd_ Abcd,Abcd.' | perl -lne 'print for /\b([A-Za-z]{4})\b/g'

输出:

ABCD
abcd
Abcd
Abcd

Perl 单行使用这些命令行标志:
-e :告诉 Perl 查找内嵌代码,而不是在文件中。
-n :一次循环输入一行,默认情况下将其分配给$_
-l :在执行内联代码之前去除输入行分隔符(默认情况下 *NIX 上的"\\n" ),并在打印时附加它。

[A-Za-z]{4} :任何 4 个字母的单词 = 一个字母,大写或小写,恰好出现 4 次。
([A-Za-z]{4}) :以上,括号用于捕获4个字母的单词。
\\b([A-Za-z]{4})\\b :上面,两侧是一个词边界\\b ,这使它成为一个单独的词。
print for /(...)/g :迭代捕获的模式并打印所有出现的模式。

正则表达式使用这个修饰符:
/g :多个匹配项。

也可以看看:
perldoc perlrun : 如何执行 Perl 解释器:命令行开关
perldoc perlre : Perl 正则表达式 (regexes)
perldoc perlre : Perl 正则表达式(regexes):量词; 字符类和其他特殊转义; 断言; 捕获组
perldoc perlrequick : Perl 正则表达式快速perldoc perlrequick

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM