Problem with awk script

Hi
Can anyone help me in this Problem

File1
#########################

HOLI 123 AND ONE TWO THREE AMITABH SAMSUNG
POLI AND TWO SENSE CRYING WING
PPIN TBFLAG I B AND OROLE TB_HOT=" DCT" TB_CAT=" CAT" TC_NOT=" AND"
+PIN TB=" HOT" TB_GATE=" KOT" TB_LATE=" MAT" TC=LOT
MAT DAT SAT GATE IS A NAND AND PLAN ON THE RIGHT INFORMATION

##########################

I need to write a awk script should match word PPIN TBKFLAG and then remove the Key words TB_GATE=" KOT" TB_LATE=" MAT" TC=LOT

Rest should be same

Final file 1 should be like this

######################

HOLI 123 AND ONE TWO THREE AMITABH SAMSUNG
POLI AND TWO SENSE CRYING WING
PPIN TBFLAG I B AND OROLE TB_HOT=" DCT" TB_CAT=" CAT" TC_NOT=" AND"
+PIN TB=" HOT"
MAT DAT SAT GATE IS A NAND AND PLAN ON THE RIGHT INFORMATION

##############

Thanks and Regards
Kshitij Kulshreshtha

This assumes that:

PPIN TBFLAG I B AND OROLE TB_HOT=" DCT" TB_CAT=" CAT" TC_NOT=" AND" +PIN TB=" HOT" TB_GATE=" KOT" TB_LATE=" MAT" TC=LOT

is all on one line

sed '/^PPIN TBFLAG/s/TB_GATE=" KOT" TB_LATE=" MAT" TC=LOT//'

Which when it finds a line starting with PPIN TBFLAG it then substitutes:
TB_GATE=" KOT" TB_LATE=" MAT" TC=LOT
with nothing.

Hi Thanks for the Reply

But the Code is coming in different lines as shown in the below code

  1. HOLI 123 AND ONE TWO THREE AMITABH SAMSUNG
  2. POLI AND TWO SENSE CRYING WING
  3. PPIN TBFLAG I B AND OROLE TB_HOT=" DCT" TB_CAT=" CAT" TC_NOT=" AND"
  4. +PIN TB=" HOT" TB_GATE=" KOT" TB_LATE=" MAT" TC=LOT
  5. MAT DAT SAT GATE IS A NAND AND PLAN ON THE RIGHT INFORMATION

The awk script should search PPIN TBFLAG and then remove the flags TB_GATE=" KOT" TB_LATE=" MAT" TC=LOT

The Final code should be like this :

  1. HOLI 123 AND ONE TWO THREE AMITABH SAMSUNG
  2. POLI AND TWO SENSE CRYING WING
  3. PPIN TBFLAG I B AND OROLE TB_HOT=" DCT" TB_CAT=" CAT" TC_NOT=" AND"
  4. +PIN TB=" HOT"
  5. MAT DAT SAT GATE IS A NAND AND PLAN ON THE RIGHT INFORMATION

Thanks and Regards
Kshitij Kulshreshtha

Maybe something like this:

$
$ cat -n input.txt
     1  HOLI 123 AND ONE TWO THREE AMITABH SAMSUNG
     2  POLI AND TWO SENSE CRYING WING
     3  PPIN TBFLAG I B AND OROLE TB_HOT=" DCT" TB_CAT=" CAT" TC_NOT=" AND"
     4  +PIN TB=" HOT" TB_GATE=" KOT" TB_LATE=" MAT" TC=LOT
     5  MAT DAT SAT GATE IS A NAND AND PLAN ON THE RIGHT INFORMATION
$
$ awk '/^PPIN TBFLAG/ {ln=NR}; {if ($0 ~ /.*TB_GATE/ && NR==ln+1) {sub(/ TB_GATE.*/,"")} print}' input.txt
HOLI 123 AND ONE TWO THREE AMITABH SAMSUNG
POLI AND TWO SENSE CRYING WING
PPIN TBFLAG I B AND OROLE TB_HOT=" DCT" TB_CAT=" CAT" TC_NOT=" AND"
+PIN TB=" HOT"
MAT DAT SAT GATE IS A NAND AND PLAN ON THE RIGHT INFORMATION
$
$

tyler_durden

sed  '/PPIN TBFLAG/{n;s/TB_GATE=\" KOT\" TB_LATE=\" MAT\" TC=LOT//g}' file

or

awk '/PPIN TBFLAG/{print;getline;gsub(/TB_GATE=" KOT" TB_LATE=" MAT" TC=LOT/,"");print;next}{print}' file

cheers,
Devaraj Takhellambam

well, if you really must search for PPIN first, i assume that you want to remove TB_GATE and the rest only when PPIN is found.
here's an alternative solution in Python, assuming TB_GATE is followed by TB_LATE and TC.

f=0
for line in open("file"):
    if "PPIN" in line:f=1
    if f and "TB_GATE" in line:
        s = line.index("TB_GATE")
        line=line[:s]
        f=0
    print line.strip()
            

output:

# more file
1. HOLI 123 AND ONE TWO THREE AMITABH SAMSUNG
2. POLI AND TWO SENSE CRYING WING
3. PPIN TBFLAG I B AND OROLE TB_HOT=" DCT" TB_CAT=" CAT" TC_NOT=" AND"
4. MAT DAT SAT GATE IS A NAND AND PLAN ON THE RIGHT INFORMATION
5. +PIN TB=" HOT" TB_GATE=" KOT" TB_LATE=" MAT" TC=LOT

# ./test.py
1. HOLI 123 AND ONE TWO THREE AMITABH SAMSUNG
2. POLI AND TWO SENSE CRYING WING
3. PPIN TBFLAG I B AND OROLE TB_HOT=" DCT" TB_CAT=" CAT" TC_NOT=" AND"
4. MAT DAT SAT GATE IS A NAND AND PLAN ON THE RIGHT INFORMATION
5. +PIN TB=" HOT"