我有一个文件:
first basket with apple
second basket with apricota
third basket with tomato
fourth basket with olives
fifth empty basket
我必须在每个1,3,5.N字符串中打印包含end / e,o,y / letter的每个单词。 结果必须是:苹果,番茄,空。 我可以分开1,3,5个字符串,但不能将字符串中的每个单词分开并检查它
awk '{if (NR % 2 != 0); {if (/(y|e|o)$/) print $0}}' inputfile
并且有结果
first basket with apple
答案 0 :(得分:1)
您可以使用类似
的内容$ awk 'NR % 2 { for (i=1; i<=NF; i++) if ($i ~ /[eoy]$/) print $i}' input
apple
tomato
empty
它的作用是什么?
NR % 2
选择第1 3 5行...
if ($i ~ /[eoy]$/)
检查每个字段,wrod是否以e
或o
或y
答案 1 :(得分:1)
好像你想要这样的东西,
$ awk '{for(i=1;i<=NF;i++){if($i ~ /.*(e|o|y)$/){print $0}}}' file
first basket with apple
third basket with tomato
fifth empty basket
只获取单词,
$ awk '{for(i=1;i<=NF;i++){if($i ~ /.*(e|o|y)$/){print $i}}}' file
apple
tomato
empty
答案 2 :(得分:0)
以下是gnu awk
解决方案(由于RS
中的多个字符):
awk -v RS=" |\n" '/([yeo])$/' file
apple
tomato
empty
此处RS
设置为空格或换行符,因此每行会运行一个单词。