Results 1 to 7 of 7
Hi.
I have data like this:
[1] private.enterprises.vender.generic.1.2.1.0 (OctetString): Text1
[2] private.enterprises.vender.generic.1.2.2.0 (OctetString): Text2
[3] private.enterprises.vender.generic.1.2.3.0 (Integer): Text3
[4] private.enterprises.vender.generic.1.2.4.0 (Integer): 4
[5] private.enterprises.vender.generic.1.2.5.0 (OctetString): 2010-01-21, 22:30:12
[6] private.enterprises.vender.generic.1.2.6.0 (Integer): ...
- 02-01-2010 #1Just Joined!
- Join Date
- Feb 2010
- Posts
- 2
Print lines with sed or awk
Hi.
I have data like this:
[1] private.enterprises.vender.generic.1.2.1.0 (OctetString): Text1
[2] private.enterprises.vender.generic.1.2.2.0 (OctetString): Text2
[3] private.enterprises.vender.generic.1.2.3.0 (Integer): Text3
[4] private.enterprises.vender.generic.1.2.4.0 (Integer): 4
[5] private.enterprises.vender.generic.1.2.5.0 (OctetString): 2010-01-21, 22:30:12
[6] private.enterprises.vender.generic.1.2.6.0 (Integer): Text4
[7] private.enterprises.vender.generic.1.2.7.0 (Integer): 2
[8] private.enterprises.vender.generic.1.2.8.0 (Integer): 2
[9] private.enterprises.vender.generic.1.2.9.0 (Integer): 0
[10] private.enterprises.vender.generic.1.2.10.0 (Integer): 12366
[11] private.enterprises.vender.generic.1.2.11.0 (OctetString): None
[12] private.enterprises.vender.generic.1.2.12.0 (OctetString): One or more ports
[13] private.enterprises.vender.generic.1.2.13.0 (OctetString): Component=Ss7PieManager
[14] private.enterprises.vender.generic.1.2.14.0 (ObjectIdentifier): private.en
How do I precent this on one line:
Text1 Text2 Text3 4 2010-01-21, 22:30:12 Text4 2 2 .....
This output is from an HPOV. Every alarm has 14 lines.
Thanks
Ben
- 02-01-2010 #2
I can't understand the output pattern you want. You posted
could you give the exact pattern you expect from your example data file. Is it the last field your interested in?Code:Text1 Text2 Text3 4 2010-01-21, 22:30:12 Text4 2 2 .....
if it is:
Code:awk '{printf("%s ", $NF)}' datafileCode:[1] private.enterprises.vender.generic.1.2.1.0 (OctetString): Text1 [2] private.enterprises.vender.generic.1.2.2.0 (OctetString): Text2 [3] private.enterprises.vender.generic.1.2.3.0 (Integer): Text3 [4] private.enterprises.vender.generic.1.2.4.0 (Integer): 4 [5] private.enterprises.vender.generic.1.2.5.0 (OctetString): 2010-01-21, 22:30:12 [6] private.enterprises.vender.generic.1.2.6.0 (Integer): Text4 [7] private.enterprises.vender.generic.1.2.7.0 (Integer): 2 [8] private.enterprises.vender.generic.1.2.8.0 (Integer): 2 [9] private.enterprises.vender.generic.1.2.9.0 (Integer): 0 [10] private.enterprises.vender.generic.1.2.10.0 (Integer): 12366 [11] private.enterprises.vender.generic.1.2.11.0 (OctetString): None [12] private.enterprises.vender.generic.1.2.12.0 (OctetString): One or more ports [13] private.enterprises.vender.generic.1.2.13.0 (OctetString): Component=Ss7PieManager [14] private.enterprises.vender.generic.1.2.14.0 (ObjectIdentifier): private.en
Last edited by gerard4143; 02-01-2010 at 01:28 PM.
Make mine Arch Linux
- 02-02-2010 #3
As I understand your post, you want everything after the colon on a single line. You can do this via:
On my system, copying the data you listed as input into a file (name_of_file) and running the above command produces exactly the output you requested.Code:cat name_of_file | while read line; do foo=`cut -d ":" -f 2`; echo $foo; done
- 02-02-2010 #4Just Joined!
- Join Date
- Feb 2010
- Posts
- 1
Hello,
I could not find a better field separator for this kind of format tha "):".
If this comes anywhere else then the code may fail.
Write the text to file name input.txt then run the following command.
awk -F"):" ' { print $NF }' input.txt | sed 's/^ //g'
The sed is used to remove the spaces in front of lines.
- 02-02-2010 #5Just Joined!
- Join Date
- Feb 2010
- Posts
- 2
Thanks
Thanks for responding.
I know it is a dificult task. The output file is from an HP-OpenView, when too many alarms in DB then we have to take them out in a file.
I would like to view this file, but havn't found a tool for viewing HP-OpenView alarm file. Maybe you know of one?
Then I would like self to get the lines with the info I would like.
If all alarms have 14 lines of data, Then I would like to see line 1, 2, 5 and 12 - ind one line.
Thanks
ben
- 02-03-2010 #6Just Joined!
- Join Date
- Mar 2006
- Posts
- 29
If i understand well, you need anything after the colon (
character :
Hope it helpsCode:#!/bin/sh IFS=$'\n' for i in `cat test.txt`; do
echo "$i" | cut -d ':' -f 2- | sed 's%^ %%'done
- 02-03-2010 #7
Or you could call awk
Which produces the outputCode:awk '{for(i = 0; i <= NF; ++i){if (i > 3){printf("%s ", $i);}}}END{printf("\n");}' datafile
Text1 Text2 Text3 4 2010-01-21, 22:30:12 Text4 2 2 0 12366 None One or more ports Component=Ss7PieManager private.enMake mine Arch Linux


Reply With Quote