我需要使用Linux shell中的grep命令获得四字母单词的数量。我的想法是创建一个四字母单词的列表,然后用一个 | wc -l 的管道。
| wc -l
我对Linux相当陌生,但我已经尝试了以下方法。
cat your_file | grep -c '^[ \t]*[a-zA-Z]\{5\}[ \t]*$' grep -o -w "\w\{5\}" your_file
grep -o -w "\w\{5\}" your_file
linux
unix
count
grep
doelie247 发布于 2020-11-20
1 个回答
Timur Shtatland 发布于 2020-11-20
已采纳
0 人赞同
Use this Perl one-liner: 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' Output: Perl单行程序使用这些命令行标志。 -e:告诉Perl在行内寻找代码,而不是在文件中寻找。 -n:每次循环输入一行,默认分配给$_。 -l:在行内执行代码前剥离输入行分隔符(*NIX上默认为"\n"),并在打印时追加。 替换代码8】:任何4个字母的单词=一个字母,大写或小写,正好有4次出现。 ([A-Za-z]{4}):以上,括号用于捕捉4个字母的单词。 \b([A-Za-z]{4})\b:上述内容,两侧有一个词的边界\b,使其成为一个独立的词。 替换代码12】:对捕获的模式进行迭代,并打印所有出现的情况。 The regex uses this modifier: /g: 多次匹配。
Use this Perl one-liner:
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' Output: Perl单行程序使用这些命令行标志。 -e:告诉Perl在行内寻找代码,而不是在文件中寻找。 -n:每次循环输入一行,默认分配给$_。 -l:在行内执行代码前剥离输入行分隔符(*NIX上默认为"\n"),并在打印时追加。 替换代码8】:任何4个字母的单词=一个字母,大写或小写,正好有4次出现。 ([A-Za-z]{4}):以上,括号用于捕捉4个字母的单词。 \b([A-Za-z]{4})\b:上述内容,两侧有一个词的边界\b,使其成为一个独立的词。 替换代码12】:对捕获的模式进行迭代,并打印所有出现的情况。 The regex uses this modifier: /g: 多次匹配。
echo 'ABCD abcd abcd1 abcd_ Abcd,Abcd.' | perl -lne 'print for /\b([A-Za-z]{4})\b/g' Output: Perl单行程序使用这些命令行标志。 -e:告诉Perl在行内寻找代码,而不是在文件中寻找。 -n:每次循环输入一行,默认分配给$_。 -l:在行内执行代码前剥离输入行分隔符(*NIX上默认为"\n"),并在打印时追加。 替换代码8】:任何4个字母的单词=一个字母,大写或小写,正好有4次出现。 ([A-Za-z]{4}):以上,括号用于捕捉4个字母的单词。 \b([A-Za-z]{4})\b:上述内容,两侧有一个词的边界\b,使其成为一个独立的词。 替换代码12】:对捕获的模式进行迭代,并打印所有出现的情况。 The regex uses this modifier: /g: 多次匹配。
Output:
Perl单行程序使用这些命令行标志。 -e:告诉Perl在行内寻找代码,而不是在文件中寻找。 -n:每次循环输入一行,默认分配给$_。 -l:在行内执行代码前剥离输入行分隔符(*NIX上默认为"\n"),并在打印时追加。
-e
-n
$_
-l
"\n"
替换代码8】:任何4个字母的单词=一个字母,大写或小写,正好有4次出现。 ([A-Za-z]{4}):以上,括号用于捕捉4个字母的单词。 \b([A-Za-z]{4})\b:上述内容,两侧有一个词的边界\b,使其成为一个独立的词。 替换代码12】:对捕获的模式进行迭代,并打印所有出现的情况。
([A-Za-z]{4})
\b([A-Za-z]{4})\b
\b
The regex uses this modifier: /g: 多次匹配。
/g