Sponsored Content
Top Forums Shell Programming and Scripting How to strip some characters before putting in array? Post 302931671 by RavinderSingh13 on Wednesday 14th of January 2015 12:48:10 PM
Old 01-14-2015
Quote:
Originally Posted by ken6503
Thanks R.Singh.
the code works.

I have some questions about this code.

1. what is the difference between "gsub(/s\(/,X,$NF)" and "gsub(/s\(/,"",$NF)"
2. Is it necessary to read the file twice? in the code, think it only execute NR==FNR.
I tried below code, the results are same

Code:
awk 'FNR==NR{if(NF>1){A[$1]=$1;gsub(/s\(/,X,$NF);gsub(/\)$/,X,$NF);B[$NF]=$NF} else {gsub(/s\(/,X,$NF);gsub(/\)$/,X,$NF);B[$NF]=$NF}} END{for(j in A){delete B[j]}for(u in B){print B[u]}}' Input_file

Hello Ken6503,

For 1st query:
gsub(/s\(/,X,$NF) means it will substitute strings (/ and \)with NULL value. (I have used \(/ because (,) are meta characters and to
tell awk not to take their special meaning and take characters as it is we use escape character \)

For 2nd query:
Thank you for pointing out same, Yes you are right we can we can read the file once also, so no need to put FNR==NR condition in it,
so code can be reduce to as follows.(Not tested in different scenarios)
Code:
awk '{if(NF>1){A[$1]=$1;gsub(/s\(/,X,$NF);gsub(/\)$/,X,$NF);B[$NF]=$NF} else {gsub(/s\(/,X,$NF);gsub(/\)$/,X,$NF);B[$NF]=$NF}} END{for(j in A){delete B[j]}for(u in B){print B[u]}}' Input_file

Output will be as follows.
Code:
deptnm-ocode-00-dum
deptnm-appnm-ecode
deptnm-on-rundt-bp
deptnm-on-rundt-run
deptnm-appnm-ecode-dld
deptnm-ocode-30-ddd
deptnm-ocode-50-curcnt

Thanks,
R. Singh

Last edited by RavinderSingh13; 01-14-2015 at 01:55 PM..
This User Gave Thanks to RavinderSingh13 For This Post:
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Strip characters after the last "/"

Hi, Could anybody please guide how to strip all charaters after the last '/' from a string in a shell script. I have got few strings like "/tmp/oracle/oradata1/abc" or "/var/log/backup/bdfd" and I want to strip anything after the last "/" i.e "abc" and "bdfd" in my case. Thanks, Jamal (3 Replies)
Discussion started by: ahjaeasedqa
3 Replies

2. Shell Programming and Scripting

create array holding characters from sring then echo array.

Hi, I wish to store $string1 in $string1array a character in each array element. Then i wish to echo the entire array to the screen so that it reads as the normal string again. I have been trying with the code below but does not work. Please help... To put string into array: ... (5 Replies)
Discussion started by: rorey_breaker
5 Replies

3. UNIX for Dummies Questions & Answers

Array with special Characters

Hi, I would write a shell script to execute a series of command. However, if the cmd contains "-" in the array. It fails to do so. I'd tried use ', " or \ but get the same result. Output: (1 Reply)
Discussion started by: donaldfung
1 Replies

4. Shell Programming and Scripting

Putting a character between two other characters?

I need to separate Pascal style identifiers (TheyLookLikeThis) into words separated by an underscore (_). I've tried sed 's//&_&/' but this won't work (obviously). I'd love some help. (4 Replies)
Discussion started by: Ilja
4 Replies

5. Shell Programming and Scripting

Strip First few Characters

I want to strip first few characters from each record until a proper datesamp is found. Request for getNextPage.................06/29/12 07:49:30 VVUKOVIC@67.208.166.131{7A805FEF76A62FCBB23EA78B5380EF95.tomcat1}TP-Processor14 LogExchUsage: ERROR:: isprof=false : exch=NSDQ output should be... (2 Replies)
Discussion started by: ratheeshjulk
2 Replies

6. Shell Programming and Scripting

Help awk/sed: putting a space after numbers:to separate number and characters.

Hi Experts, How to sepearate the list digit with letters : with a space from where the letters begins, or other words from where the digits ended. file 52087mo(enbatl) 52049mo(enbatl) 52085mo(enbatl) 25051mo(enbatl) The output should be looks like: 52087 mo(enbatl) 52049... (10 Replies)
Discussion started by: rveri
10 Replies

7. Shell Programming and Scripting

Taking information from a postgres sql query and putting it into a shell script array

I have a postgres sql statement that is the following: select age from students; which gives me the entries: Age --- 10 15 13 12 9 14 10 which is about 7 rows of data. Now what I would like to do with this is use a shell script to create an array age. As a results... (3 Replies)
Discussion started by: JSNY
3 Replies

8. Shell Programming and Scripting

Need to strip control-A characters from a column in a file

Hi All, I currently have flat file with 32 columns. The field delimiter is cntl-A ( \x01). The file has been extracted from an oracle table using a datastage job. However, in the 6th field, the data contains additional control -A characters which came as a part of the table data. I need... (12 Replies)
Discussion started by: harsha1238
12 Replies

9. Shell Programming and Scripting

Putting strings into positioning array in loop

i need to add 2 string variables into a positioning array , repeatedly - in loop. First string in $2, second to $3 then up to the desired count incrementing the "position". Using set -- alone does not increment the count so I end up with 2 variables in the array. How do I increment the... (7 Replies)
Discussion started by: annacreek
7 Replies
All times are GMT -4. The time now is 11:40 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy