在互联网上搜索了一个小时之后,我仍然无法使这个简单的任务正常工作:
过滤以下行
strawberries blueberries tastyapplepies are on the desk
apple banana pineapple guava applejuice quite delicious
到
tastyapplepies
apple pineapple applejuice
通过查找每个字段是否包含apple
并使用grep
和awk
等命令。
答案 0 :(得分:2)
你需要这个:
awk '{c=0; for(i=1;i<=NF;i++) if($i~/apple/) printf "%s%s",(++c>1?OFS:""),$i; if (c) print ""}' file
尝试所有输入解决方案,其中apple
出现在某些行但不是所有行的最后一个字段中,以及一行不包含apple
的行,例如:
$ cat file
strawberries blueberries tastyapplepies are on the desk
apple banana pineapple guava applejuice quite delicious
here is a line without the target word
here is a line ending in apple
$ awk '{c=0; for(i=1;i<=NF;i++) if($i~/apple/) printf "%s%s",(++c>1?OFS:""),$i; if (c) print ""}' file
tastyapplepies
apple pineapple applejuice
apple
答案 1 :(得分:1)
awk '{for(i=1;i<=NF;i++){if($i~/apple/){if(i==NF){printf("%s", $i);} else {printf("%s ",$i);}}}print "";}' <input.txt>
答案 2 :(得分:0)
perl -anE'$,=" ";@a=grep/apple/,@F and say@a'