2013-12-17 15 views
6

sedに関する質問があります。2つのパターンを検索するためにSed、最初のパターンが存在しない場合は、2番目のパターンを印刷します。

[/=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を学んで答えを探していた3日目です。私はgrepを学んだ。 grepを使うと簡単です。しかし、この割り当ては私にsedを使うよう強制します。これまでのところ、これは私のsedコマンドです:

sed 's/.*\([0-9]*:[0-9]*\(am\|pm\)\).*/\1/' FILE 

結果には分とam/pmしか表示されません。入力の各行には多くの時間パターンがあります。しかし、私の結果は、各行の最後の時間パターンを示しています。ご覧のとおり、

:20pm 
:25am 
:24pm 
:21am 

どこが間違っていましたか?ここで

+0

+1を。うーん、あなたのタイトルはあなたの説明と一致していないようだが、一体何が、休暇のシーズン。幸運と投稿を続ける! – shellter

答えて

5

あなたが行く:サンプルデータ、予想される出力、電流出力、および....あえぎ、自分自身の問題を解決したのがO.P.の試みなど、非常に良い最初の質問のための

sed -e 's/[^$0-9]*\([0-9:]*[ap]m\)*\(\$[0-9.]*\).*/\1\2/' 
+0

うわー、ありがとう。これは機能します。私はこのコマンドについて学びます。もう一度、ありがとうございます。あなたは私の日を作る。 :) – mprabuw

+0

ハハ、どうぞよろしくお願いします。私は帽子の狩猟のために今日の票を欠いていますが、明日あなたの優秀な質問をアップアップします;-) – janos

+0

常に拳の "日"(サンプルの場合)の値があり、その日に関連する要素の桁数(サンプルの場合のような色)。非常に効率的なsed – NeronLeVelu

関連する問題