我有一个包含许多行的文件:
at 12:00 eating:fruit
at 18:00 eating:vegetals
at 22:00 eating:nothing
我在尝试之前尝试搜索。但我没有找到按照我喜欢的方式过滤文件的方法。
我想得到一个像这样的过滤文件: 例如,如果我想知道今天要吃什么。
StreamWriter
有没有办法用awk或bash做到这一点?
答案 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