过滤文件

时间:2015-06-25 08:31:51

标签: bash file unix awk filefilter

我有一个包含许多行的文件:

at 12:00  eating:fruit
at 18:00 eating:vegetals
at 22:00 eating:nothing

我在尝试之前尝试搜索。但我没有找到按照我喜欢的方式过滤文件的方法。

我想得到一个像这样的过滤文件: 例如,如果我想知道今天要吃什么。

StreamWriter

有没有办法用awk或bash做到这一点?

3 个答案:

答案 0 :(得分:4)

使用awk,您可以这样做:

awk -F '[\ :]' '/the schedule is/{h=$2;m=$3} /eating/{print "at "h":"m" eating:"$3}' filename

输出:

at 12:00 eating:fruit
at 18:00 eating:vegetals
at 22:00 eating:nothing

即使您有eating作为第二或第三项任务,这也会给出正确答案。

答案 1 :(得分:3)

perl -lne '$a=$1 if(/(^at\s+[^\s]*?)\s/);print $a." ".$1 if(/(eating:.*)$/)'

检查here输出。

答案 2 :(得分:2)

你可以用grep和sed简单地做到这一点。假设您的示例文件保存为f.txt

egrep '^at|eating' f.txt | sed 's/first_task://' |
  sed  's/the schedule is ://' | paste -d' ' - - | column  -t

返回

at  12:00   eating:fruit
at  18:h00  eating:vegetals
at  22:h00  eating:nothing