Print whole line if variables matches


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Print whole line if variables matches
# 8  
Old 06-17-2016
Tried, even created file1 and file2 manually which contain only few strings and got no result.

Code:
cat file1
aaa_Capacity^20^NBSC01^asdfas
bbb_Capacity^4^NBSC016asdfas

Code:
cat file2
20^3
4^44

Code:
[root@azrcc3vsys-zbx1 tmp]# 
[root@azrcc3vsys-zbx1 tmp]# awk 'FNR==NR{split($2, A," ");B[A[1]]=$0;next} ($1 in B){print B[$1]}' FS="Capacity " /tmp/file1 FS=" " /tmp/file2
[root@azrcc3vsys-zbx1 tmp]#

---------- Post updated at 05:20 PM ---------- Previous update was at 05:11 PM ----------

I found space after Capacity and removed it and also changed FS=" " to FS="^" for second file and now it returns one string:

Code:
[root@azrcc3vsys-zbx1 parsing]# awk 'FNR==NR{split($2, A," ");B[A[1]]=$0;next} ($1 in B){print B[$1]}' FS="^" /tmp/featureCode1stPart FS="^" /tmp/featureCodesAndCapacity
[Lb UTDOA]_[20]_Capacity^1^NBSC01 ^Lb_UTDOA
[root@azrcc3vsys-zbx1 parsing]# 
[root@azrcc3vsys-zbx1 parsing]# cat /tmp/featureCodesAndCapacity
1234^4
7^16
4^1321
2^1321
14^389
1^1780
13^38
73^584
393^0
591^0
834^0
673^0
909^30
1015^0
1262^1807
1273^0
1219^0
1379^1196
3730^85
1826^3
16^0
19^0
20^0
[root@azrcc3vsys-zbx1 parsing]#

but it should return abouot 23 strings, seems that it checks only last value from file2

---------- Post updated at 05:26 PM ---------- Previous update was at 05:20 PM ----------

I think i found mistake, i will check and update status, most probably command work correct.

---------- Post updated at 05:45 PM ---------- Previous update was at 05:26 PM ----------

Ok, my mistake is that I mislead with position of the file Smilie

this is original output of file1:

Code:
[root@azrcc3vsys-zbx1 tmp]# cat featureCode1stPart 
[Double Power TRX for 2G BTS]_[834]_Capacity^50^NBSC01 ^Double_Power_TRX_for_2G_BTS
[Soft CH capa]_[14]_Capacity^2100^NBSC01 ^Soft_CH_capa
[Flexi Multiradio TRX HW Activation]_[1379]_Capacity^2600^NBSC01 ^Flexi_Multiradio_TRX_HW_Activation
[PCU2 app SW]_[13]_Capacity^68^NBSC01 ^PCU2_app_SW
[GPRS]_[673]_Capacity^2199^NBSC01 ^GPRS
[NCCR]_[11]_Capacity^1917^NBSC01 ^NCCR
[NACC]_[10]_Capacity^1672^NBSC01 ^NACC
[IS-NCCR]_[9]_Capacity^2100^NBSC01 ^IS-NCCR
[EDA]_[64]_Capacity^1927^NBSC01 ^EDA
[ext NACC]_[66]_Capacity^317^NBSC01 ^ext_NACC
[AMR FR]_[72]_Capacity^140^NBSC01 ^AMR_FR
[STIRC]_[393]_Capacity^850^NBSC01 ^STIRC
[DTM]_[63]_Capacity^1750^NBSC01 ^DTM
[AMR PPC]_[578]_Capacity^1827^NBSC01 ^AMR_PPC
[PPC 2]_[606]_Capacity^1827^NBSC01 ^PPC_2
[Gb over IP]_[7]_Capacity^2100^NBSC01 ^Gb_over_IP
[Load Based AMR Packing]_[1180]_Capacity^1672^NBSC01 ^Load_Based_AMR_Packing
[Radio Link Timeout parameter AMR HR]_[1181]_Capacity^1827^NBSC01 ^Radio_Link_Timeout_parameter_AMR_HR
[1TRX Basic SW licence]_[1262]_Capacity^2800^NBSC01 ^1TRX_Basic_SW_licence
[EDGE BSS Fnc]_[4]_Capacity^1837^NBSC01 ^EDGE_BSS_Fnc
[105km Extended Cell for CS]_[1219]_Capacity^754^NBSC01 ^105km_Extended_Cell_for_CS
[AIS FE BTS]_[587]_Capacity^2700^NBSC01 ^AIS_FE_BTS
[Lb Interface basic]_[16]_Capacity^1^NBSC01 ^Lb_Interface_basic
[Lb AGPS]_[19]_Capacity^1^NBSC01 ^Lb_AGPS
[Lb UTDOA]_[20]_Capacity^1^NBSC01 ^Lb_UTDOA
[L3 functionality for ESB switch]_[1234]_Capacity^6^NBSC01 ^L3_functionality_for_ESB_switch
[Downlink Dual Carrier]_[1273]_Capacity^10^NBSC01 ^Downlink_Dual_Carrier
[IMSI BH]_[8]_Capacity^1372^NBSC01 ^IMSI_BH
[HMC]_[65]_Capacity^686^NBSC01 ^HMC
[Multipoint Gb]_[67]_Capacity^1572^NBSC01 ^Multipoint_Gb
[Multipoint A-if]_[69]_Capacity^1372^NBSC01 ^Multipoint_A-if
[Q1 over TCP/IP]_[1238]_Capacity^1372^NBSC01 ^Q1_over_TCP/IP
[OSI over TCP/IP]_[1242]_Capacity^1372^NBSC01 ^OSI_over_TCP/IP
[2G Flexi Abis over IP/ Ethernet]_[1015]_Capacity^10^NBSC01 ^2G_Flexi_Abis_over_IP/_Ethernet
[FACCH and SACCH repetition]_[579]_Capacity^1372^NBSC01 ^FACCH_and_SACCH_repetition
[FACCH repetition for AMR FR]_[580]_Capacity^1372^NBSC01 ^FACCH_repetition_for_AMR_FR
[FACCH repetition for AMR HR]_[653]_Capacity^1372^NBSC01 ^FACCH_repetition_for_AMR_HR
[FACCH Power Increment]_[654]_Capacity^1372^NBSC01 ^FACCH_Power_Increment
[AMR Signalling Measurement]_[1014]_Capacity^1372^NBSC01 ^AMR_Signalling_Measurement
[GPRS CS3 and CS4]_[2]_Capacity^1816^NBSC01 ^GPRS_CS3_and_CS4
[A5/3 Ciphering]_[1235]_Capacity^1372^NBSC01 ^A5/3_Ciphering
[E-Cell GPRS]_[591]_Capacity^1000^NBSC01 ^E-Cell_GPRS
[2G Flexi Additional 2 E1,T1  IF]_[909]_Capacity^151^NBSC01 ^2G_Flexi_Additional_2_E1,T1__IF
[AMR Capacity]_[1]_Capacity^1950^NBSC01 ^AMR_Capacity
[Paging Coordination in BSC]_[1802]_Capacity^1117^NBSC01 ^Paging_Coordination_in_BSC
[PDO]_[589]_Capacity^75^NBSC01 ^PDO
[PCP]_[70]_Capacity^200^NBSC01 ^PCP
[GSM Power License for MultiRadio]_[3730]_Capacity^130^NBSC01 ^GSM_Power_License_for_MultiRadio
[Flexi EDGE BTS Operating SW]_[73]_Capacity^898^NBSC01 ^Flexi_EDGE_BTS_Operating_SW
[Extended CCCH]_[1826]_Capacity^700^NBSC01 ^Extended_CCCH
[Inter System NACC for LTE]_[1528]_Capacity^1030^NBSC01 ^Inter_System_NACC_for_LTE
[LTE System Information]_[1965]_Capacity^993^NBSC01 ^LTE_System_Information
[Fast return to LTE]_[4367]_Capacity^1030^NBSC01 ^Fast_return_to_LTE
[SGSN Selection Improvement]_[4405]_Capacity^1363^NBSC01 ^SGSN_Selection_Improvement
[MOCN Rel10 support]_[4363]_Capacity^1000^NBSC01 ^MOCN_Rel10_support
[Cell Selection]_[594]_Capacity^100^NBSC01 ^Cell_Selection
[[Capacity^^NBSC01 
[root@azrcc3vsys-zbx1 tmp]#

and this is original output of file2:
Code:
[root@azrcc3vsys-zbx1 tmp]# cat featureCodesAndCapacity
1234_4
7_16
4_1321
2_1321
14_389
1_1780
13_38
73_584
393_0
591_0
834_0
673_0
909_30
1015_0
1262_1807
1273_0
1219_0
1379_1196
3730_85
1826_3
16_0
19_0
20_0
[root@azrcc3vsys-zbx1 tmp]#

Both files generating by another script, so any changes can be done if needed.

My mistake is that I was comparing with wrong position...
I need to compare values which coming BEFORE Capacity, not after.

And I tried below command but it gives no result as well:

Code:
awk 'FNR==NR{split($2, A," ");B[A[1]]=$0;next} ($1 in B){print B[$1]}' FS="_" /tmp/featureCode1stPart FS="_" /tmp/featureCodesAndCapacity

I know that it was my mistake and I mislead you guys and I am sorry for that...
# 9  
Old 06-17-2016
Hello nypreH,

I am not sure about your requirement as you are creating a new requirement in each post. Could you please try following and let me know if this helps.
Code:
awk 'FNR==NR{A[$2]=$0;next} {Q="["$1"]"} (Q in A){print A[Q]}' FS="_" featureCode1stPart  featureCodesAndCapacity

Output will be as follows.
Code:
[L3 functionality for ESB switch]_[1234]_Capacity^6^NBSC01 ^L3_functionality_for_ESB_switch
[Gb over IP]_[7]_Capacity^2100^NBSC01 ^Gb_over_IP
[EDGE BSS Fnc]_[4]_Capacity^1837^NBSC01 ^EDGE_BSS_Fnc
[GPRS CS3 and CS4]_[2]_Capacity^1816^NBSC01 ^GPRS_CS3_and_CS4
[Soft CH capa]_[14]_Capacity^2100^NBSC01 ^Soft_CH_capa
[AMR Capacity]_[1]_Capacity^1950^NBSC01 ^AMR_Capacity
[PCU2 app SW]_[13]_Capacity^68^NBSC01 ^PCU2_app_SW
[Flexi EDGE BTS Operating SW]_[73]_Capacity^898^NBSC01 ^Flexi_EDGE_BTS_Operating_SW
[STIRC]_[393]_Capacity^850^NBSC01 ^STIRC
[E-Cell GPRS]_[591]_Capacity^1000^NBSC01 ^E-Cell_GPRS
[Double Power TRX for 2G BTS]_[834]_Capacity^50^NBSC01 ^Double_Power_TRX_for_2G_BTS
[GPRS]_[673]_Capacity^2199^NBSC01 ^GPRS
[2G Flexi Additional 2 E1,T1  IF]_[909]_Capacity^151^NBSC01 ^2G_Flexi_Additional_2_E1,T1__IF
[2G Flexi Abis over IP/ Ethernet]_[1015]_Capacity^10^NBSC01 ^2G_Flexi_Abis_over_IP/_Ethernet
[1TRX Basic SW licence]_[1262]_Capacity^2800^NBSC01 ^1TRX_Basic_SW_licence
[Downlink Dual Carrier]_[1273]_Capacity^10^NBSC01 ^Downlink_Dual_Carrier
[105km Extended Cell for CS]_[1219]_Capacity^754^NBSC01 ^105km_Extended_Cell_for_CS
[Flexi Multiradio TRX HW Activation]_[1379]_Capacity^2600^NBSC01 ^Flexi_Multiradio_TRX_HW_Activation
[GSM Power License for MultiRadio]_[3730]_Capacity^130^NBSC01 ^GSM_Power_License_for_MultiRadio
[Extended CCCH]_[1826]_Capacity^700^NBSC01 ^Extended_CCCH
[Lb Interface basic]_[16]_Capacity^1^NBSC01 ^Lb_Interface_basic
[Lb AGPS]_[19]_Capacity^1^NBSC01 ^Lb_AGPS
[Lb UTDOA]_[20]_Capacity^1^NBSC01 ^Lb_UTDOA

If above doesn't meet your requirements then please do show us sample Input_file and expected output without editing it in future please.

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 10  
Old 06-17-2016
How about (samples from post#3)
Code:
awk 'FNR==NR {T[$1]; next} ($(NF-2) in T)'  file2  file1
[STIRC]_[393]_Capacity 850 NBSC01  STIRC
[DTM]_[63]_Capacity 1750 NBSC01  DTM

# 11  
Old 06-20-2016
Suggested command from Post #9 did the trick.

Code:
awk 'FNR==NR{A[$2]=$0;next} {Q="["$1"]"} (Q in A){print A[Q]}' FS="_" featureCode1stPart  featureCodesAndCapacity

Thanks again for your help!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Print line if values in fields matches number and text

datafile: 2017-03-24 10:26:22.098566|5|'No Route for Sndr:RETEK RMS 00040 /ZZ Appl:PF Func:PD Txn:832 Group Cntr:None ISA CntlNr:None Ver:003050 '|'2'|'PFI'|'-'|'EAI_ED_DeleteAll'|'EAI_ED'|NULL|NULL|NULL|139050594|ActivityLog| 2017-03-27 02:50:02.028706|5|'No Route for... (7 Replies)
Discussion started by: SkySmart
7 Replies

2. Linux

Print line 1 if line 3 matches of the output

Hi I want to extend following command so that on the basis of "Branch: ****" on the third line I can grep and print name of the file on the first line. cat .labellog.emd | grep DA2458A7962276A7E040E50A0DC06459 | cut -d " " -f2 | grep -v branch_name | xargs -I file <command to describe> file ... (1 Reply)
Discussion started by: ezee
1 Replies

3. Shell Programming and Scripting

How to print line if two lines above it matches patterns.?

Hi, I could only find examples to print line before/after a match, but I'd need to print line after two separate lines matching. E.g.: From the below log entry, I would need to print out the 1234. This is from a huge log file, that has a lot of entries with "CLIENT" and "No" entries (+ other... (3 Replies)
Discussion started by: Juha
3 Replies

4. Shell Programming and Scripting

Print entire line only if certain fixed character matches the string

Hi All, I have a file testarun.txt contains the below lines and i want to print the lines if the character positions 7-8 matches 01. 201401011111 201401022222 201402013333 201402024444 201403015555 201403026666 201404017777 201404028888 201405019999 201405020000 I am trying the... (4 Replies)
Discussion started by: Arunprasad
4 Replies

5. Shell Programming and Scripting

awk to print the line that matches and the next if line is wrapped

I have a file and when I match the word "initiators" in the first column I need to be able to print the rest of the columns in that row. This is fine for the most part but on occasion the "initiators" line gets wrapped to the next line. Here is a sample of the file. caw-enabled ... (3 Replies)
Discussion started by: kieranfoley
3 Replies

6. Shell Programming and Scripting

Using regex's from file1, print line and line after matches in file2

Good day, I have a list of regular expressions in file1. For each match in file2, print the containing line and the line after. file1: file2: Output: I can match a regex and print the line and line after awk '{lines = $0} /Macrosiphum_rosae/ {print lines ; print lines } ' ... (1 Reply)
Discussion started by: pathunkathunk
1 Replies

7. UNIX for Advanced & Expert Users

Print line if subsrt matches array

Hi Folks! im printing all lines where the characters in position 270-271 match 33|H1|HA|KA|26 so i came up with this #!/bin/bash array=(33 H1 HA KA 26 ) for i in "${array}" do #echo $i awk '{ if (substr($0,270,2)~'/$i/') print; }' $1 >> $1.temp done It works fine . but... (2 Replies)
Discussion started by: phpsnook
2 Replies

8. Shell Programming and Scripting

How to print line if field matches?

Hi all, I got several lines line this a b c d e 1 e a 1 c d e 3 f a b c 1 e 8 h a b c d e 1 w a 1 c d e 2 w a b c d e 1 t a b c d e 7 4 How can I print the line if 1 is the field one before the last field? Basicly this 2 field ? a b c d e 1 e a b c d e 1 t The file I got is... (7 Replies)
Discussion started by: stinkefisch
7 Replies

9. Shell Programming and Scripting

Print line if first Field matches a pattern

Hi All, I would like my code to be able to print out the whole line if 1st field has a dot in the number. Sample input and expected output given below. My AWK code is below but it can;t work, can any expert help me ? Thanks in advance. {if ($1 ~ /*\.*/) { print $0 }} Input: ... (2 Replies)
Discussion started by: Raynon
2 Replies

10. Shell Programming and Scripting

print next line if matches a particular word..need help

Hi i need a help for making a script whch can print next line if it matches a particular word like file1 have ename Mohan eid 2008 ename Shyam eid 345 if scipt got Mohan it will print next line (eid 2008) pls help me .......:) (2 Replies)
Discussion started by: anish19
2 Replies
Login or Register to Ask a Question