Help with shell scripting

Shell Scripting

i want to delete bottom line and put in to upper line if it have specific word.

ex

Dell 14 20 31 
Hp 16 19
Logi 29 89 
HP 21 30
Iph 15 60 59
Hp 20 21 22

Output:

Dell 14 20 31 16 19
Logi 29 89 21 30
Iph 15 60 59 20 21 22

Thanks in Advance.........

Try this...

sed -n 'H; $ {x;s/\n[Hh][Pp]//g;p}' infile

--ahamed

Thanks a lot Ahmamed ..

But can you help on this....

i have same thing but little bit complex..

file1.txt have below input

6120.log:$_port_info = 001200/port_2_dev_16
6120.log:$_port_info = 001200/port_6_dev_17
6120.log:$_port_info = 001200/port_10_dev_18
6120.log:$_port_info = 001200/port_8_dev_7
6120.log:$_port_info = 001200/port_0_dev_5
6120.log:$_port_info = 001200/port_4_dev_6
6120.log:001200/port_2_dev_16
6120.log:vswr:  -0.7[dB]
6120.log:001200/port_6_dev_17
6120.log:vswr:   0.0[dB]
6120.log:001200/port_10_dev_18
6120.log:vswr:  -0.7[dB]
6120.log:001200/port_8_dev_7
6120.log:vswr:  17.3[dB]
6120.log:001200/port_0_dev_5
6120.log:vswr:  21.9[dB]
6120.log:001200/port_4_dev_6
6120.log:vswr:  19.5[dB]

i need out put like this file2

I want to remove all .log and [db] from all line also remove all unnecessary string and give me output like below......

6120 122  NoVSWR
6120 126  NoVSWR
6120 1210 NoVSWR
6120 128  NoVSWR
6120 120  NoVSWR
6120 124  NoVSWR
6120 122  -0.7
6120 126   0.0
6120 1210 -0.7
6120 128  17.3
6120 120  21.9
6120 124  19.5

Please help me with this .....again thanks a lottttttttttt

Where is the second column data coming from? 122, 120 etc

--ahamed

Ahamed

6120.log:$_port_info = 001200/port_2_dev_16

it will remove all unnecessary string 001200/port_2_dev_16 but i need 12 and 2 with is after port_.

6120.log:$_port_info = 001200/port_2_dev_16 = 6120 122

001200=12  and /port_2 =2 so combine it 122

Thanks for your quick replay brother...

---------- Post updated at 02:14 PM ---------- Previous update was at 12:46 PM ----------

any help please ...........................

awk -F[:/_=] '{end="NoVSWR";sub(/.log/,"");num=$1;gsub(/[0 ]/,"",$(NF-4));port=$(NF-4)$(NF-2)}  
$2!="$"{getline;end=$NF+0}{print num,port,end}' infile

--ahamed

Hi

I am getting below error when i run it....

my Script is below...

egrep -e '_dev|vswr:' *.log > $VSWR

awk -F[:/_=] '{end="NoVSWR";sub(/.log/,"");num=$1;gsub(/[0 ]/,"",$(NF-4));port=$(NF-4)$(NF-2)}$2!="$"{getline;end=$NF+0}{print num,port,end}' $VSWR

what error? which is your OS?

--ahamed

error.....
awk: syntax error near line 1
awk: illegal statement near line 1
awk: syntax error near line 1
awk: illegal statement near line 1

---------- Post updated at 11:01 PM ---------- Previous update was at 10:59 PM ----------

I am using Solaris .....

Use nawk instead of awk

--ahamed

Its works perfect..........

you r genus........

I am using this form first time ......so thanks a lot////

Thanks Ahamed .....great help from you....

I have some changes in input can you please help me to modify my commnad///

Input....

6120.log:001200/port_2_dev_16
6120.log:vswr: -0.7[dB]
6120.log:001200/port_6_dev_17
6120.log:vswr: 0.0[dB]
6120.log:001200/port_10_dev_18
6120.log:vswr: -0.7[dB]
6120.log:001200/port_8_dev_7
6120.log:vswr: 17.3[dB]
6120.log:001200/port_0_dev_5
6120.log:vswr: 21.9[dB]
6120.log:001200/port_4_dev_6
6120.log:vswr: 19.5[dB]
6054.log:001300/port_1_dev_30
6054.log:001300/port_0_dev_29
6054.log:001300/port_2_dev_31
6054.log:001200/port_0_dev_5
6054.log:vswr: 22.9[dB]
Output :

6120 122 -0.7
6120 126 0.0
6120 1210 -0.7
6120 128 17.3
6120 120 21.9
6120 124 19.5
6054 130 N/I
6054 131 N/I
6054 132 N/I
6054 120 22.9

I have below code ......Can you please help me to modify///
nawk -F[:/_=] '{end="N/I";sub(/.log/,"");num=$1;gsub(/[0 ]/,"",$(NF-4));port=$(NF-4)$(NF-2)}$2!="$"{getline;end=$NF+0}{print num,port,end}' file1 file 2

Please help me on this /////