我对sed有疑问.从这个输入:
[/=TueGreen$58.30Orange5:36pmSat*=WedOrange$76.63Purple6:20pmTue] [/=Thu6:06pm$09.05Blue11:32amMon/=Thu1:38am$56.41Red4:25amThu] [/=Sun1:49pm$12.41Yellow2:51pmMon*=FriOrange$49.68Blue1:24pmTue] [/=Sat11:58am$82.24Orange3:44amMon*=Thu1:08am$33.49Red8:21amSat]
我必须做一个输出:
$58.30 6:06pm$09.05 1:49pm$12.41 11:58am$82.24
我知道,这种模式似乎很容易,但是,我甚至未能找到时间模式.因为小时有时是1或2位数.
这是我第三天学习sed并寻找答案.我学会了grep.如果使用grep那么容易.但这项任务迫使我使用sed.到目前为止,这是我的sed命令:
sed 's/.*\([0-9]*:[0-9]*\(am\|pm\)\).*/\1/' FILE
结果仅显示分钟和上午/下午.输入的每一行都有很多时间模式.但是我的结果显示了每一行的最后一次模式.如下所示:
:20pm :25am :24pm :21am
我哪里做错了?
干得好:
sed -e 's/[^$0-9]*\([0-9:]*[ap]m\)*\(\$[0-9.]*\).*/\1\2/'