Reputation: 34818
What would be the regex to achieve this (can't seem to quite get it):
Notes:
INPUT:
Jul 19 07:32:19 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b5df900 10 nil began
Jul 19 07:32:19 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b5df900 10 nil ended/cancelled
Jul 19 07:32:19 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b544ff0 10 nil began
Jul 19 07:32:20 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b544ff0 10 nil ended/cancelled
Jul 19 07:34:00 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b549270 10 nil began
Jul 19 07:34:00 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b549270 10 nil ended/cancelled
Jul 19 07:34:02 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b33ab50 10 nil began
Jul 19 07:34:02 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b33ab50 10 nil ended/cancelled
REQUIRED OUTPUT
<Warning>: userdata: 0x1b5df900 10 nil began
<Warning>: userdata: 0x1b5df900 10 nil ended/cancelled
<Warning>: userdata: 0x1b544ff0 10 nil began
<Warning>: userdata: 0x1b544ff0 10 nil ended/cancelled
<Warning>: userdata: 0x1b549270 10 nil began
<Warning>: userdata: 0x1b549270 10 nil ended/cancelled
<Warning>: userdata: 0x1b33ab50 10 nil began
<Warning>: userdata: 0x1b33ab50 10 nil ended/cancelled
Upvotes: 1
Views: 114
Reputation: 41460
This awk
should do:
awk '{sub(/.*\] /,"")}1' file
<Warning>: userdata: 0x1b5df900 10 nil began
<Warning>: userdata: 0x1b5df900 10 nil ended/cancelled
<Warning>: userdata: 0x1b544ff0 10 nil began
<Warning>: userdata: 0x1b544ff0 10 nil ended/cancelled
<Warning>: userdata: 0x1b549270 10 nil began
<Warning>: userdata: 0x1b549270 10 nil ended/cancelled
<Warning>: userdata: 0x1b33ab50 10 nil began
<Warning>: userdata: 0x1b33ab50 10 nil ended/cancelled
Or if you like to make sure its only line with CoronaViewer
that should be printed:
awk '/CoronaViewer/ {sub(/.*\] /,"");print}' file
Upvotes: 0
Reputation: 70732
On Mac, you could use the following:
perl -nle 'print $1 if /\] *(.*)/' file
If it has to be after 'CoronaViewer' ...
perl -nle 'print $1 if /CoronaViewer\[[0-9]+\] *(.*)/' file
Upvotes: 2
Reputation: 785471
On Mac following awk
should do the job:
awk -F'CoronaViewer\[[0-9]+\] *' '/CoronaViewer\[[0-9]+\]/{print $2}' file
<Warning>: userdata: 0x1b5df900 10 nil began
<Warning>: userdata: 0x1b5df900 10 nil ended/cancelled
<Warning>: userdata: 0x1b544ff0 10 nil began
<Warning>: userdata: 0x1b544ff0 10 nil ended/cancelled
<Warning>: userdata: 0x1b549270 10 nil began
<Warning>: userdata: 0x1b549270 10 nil ended/cancelled
<Warning>: userdata: 0x1b33ab50 10 nil began
<Warning>: userdata: 0x1b33ab50 10 nil ended/cancelled
Alternative: If you can install gnu-grep
using home brew
on OSX (like I have) then this grep -P
will do the same thing:
grep -oP "CoronaViewer\[\d+\] \K<Warning>:.*" file
Upvotes: 3
Reputation: 8839
Here is an answer using sed
:
sed 's/[^<]*\(<.*\)/\1/' filename
If you know for a fact that the data you need always starts at column 43 (as in your example), you can use cut
as
cut -c43- filename
Upvotes: 1
Reputation: 54213
grep -oP "(?<=^\w{3} \d{2} \d{2}:\d{2}:\d{2} iPhone CoronaViewer\[\d{4}\] ).*$"
DEMO:
# c.txt contains:
Jul 19 07:32:19 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b5df900 10 nil began
Jul 19 07:32:19 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b5df900 10 nil ended/cancelled
Jul 19 07:32:19 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b544ff0 10 nil began
Jul 19 07:32:20 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b544ff0 10 nil ended/cancelled
Jul 19 07:34:00 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b549270 10 nil began
Jul 19 07:34:00 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b549270 10 nil ended/cancelled
Jul 19 07:34:02 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b33ab50 10 nil began
Jul 19 07:34:02 iPhone CoronaViewer[4043] <Warning>: userdata: 0x1b33ab50 10 nil ended/cancelled
> grep -oP "(?<=^\w{3} \d{2} \d{2}:\d{2}:\d{2} iPhone CoronaViewer\[\d{4}\] ).*$" c.txt
<Warning>: userdata: 0x1b5df900 10 nil began
<Warning>: userdata: 0x1b5df900 10 nil ended/cancelled
<Warning>: userdata: 0x1b544ff0 10 nil began
<Warning>: userdata: 0x1b544ff0 10 nil ended/cancelled
<Warning>: userdata: 0x1b549270 10 nil began
<Warning>: userdata: 0x1b549270 10 nil ended/cancelled
<Warning>: userdata: 0x1b33ab50 10 nil began
<Warning>: userdata: 0x1b33ab50 10 nil ended/cancelled
As usual, the correct regex for things like this tend to be what you want to EXCLUDE rather than what you want to INCLUDE, so that's a crucial part of this.
Upvotes: 0