我有一个包含300多个单词的文件。我需要找到以“t”开头的行,继续使用元音,总长度为4.然后我需要将它们转换为每行有一个单词的格式。
tr -s "[[:blank:]]" "\n" < file | grep .
有了这个我能够格式化文件,但我无法弄清楚如何选择具有上述要求的单词。我被困了:/
即。我有一个文件,其中包括“terra train chair tol mourn”。我需要像这样格式化这个文件:
tera
train
chair
tola
mourn
找到以“t”开头的并继续使用总长度为4的元音。所以应该是这样的:
tera
tola
答案 0 :(得分:6)
可以使用grep。如果您只需要一行中的第一个单词:
grep -Eow '^t[aeiou]\S{2}' file > formatted_file
如果你需要匹配整行:
grep -Eow '^t[aeiou]\S{2}$' file > formatted_file
^
无法搜索到该行的开头。t
完全匹配字母&#34; t&#34;。[aeiou]
匹配[
和]
之间的任何一个字符。\S{2}
匹配2个非空格字符$
匹配行尾-w
表示grep只会匹配整个单词,这实际上会将您的搜索范围限制为PATTERN
中指定的确切字符数。-o
表示您只输出找到的完全匹配项(在本例中为您的4个字母的单词)修改强>
如果希望-i
忽略大小写(大写/小写),也可以使用grep
选项
答案 1 :(得分:1)
关注perl oneliner
perl -nle 'push @A,$_ for /\bt[aeiou]..\b/gi;END{print"@A"}' <file
目前尚不清楚一条输入线是否有多个单词,或者输出的所有单词是否都在一行上。
perl -nle 'print for /\bt[aeiou]..\b/gi' <file
以下更新grep足以完成此项工作
grep -i '^t[eaiou][a-z][a-z]$' <file