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
- 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
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 :
- 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
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"