Getting a field


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Getting a field
# 1  
Old 04-29-2013
Getting a field

Hi,

I have a file containing text CTRY=GM&PROJTYPE=SP&PROJECTTYPE=Small+Project

I need to get GM if CTRY is provided in command line,SP for PROJTYPE, etc

My code is giving entire filed

Code:
grep CTRY /home/gfile | cut -d "=" -f2

Output - GM&PROJTYPE

Thanks
# 2  
Old 04-29-2013
Here is one way to do it:
Code:
$ cat test.sh
pattern=CTRY
sed "s/.*\<$pattern\>=\([^&]*\)&*.*/\1/" file

pattern=PROJTYPE
sed "s/.*\<$pattern\>=\([^&]*\)&*.*/\1/" file

pattern=PROJECTTYPE
sed "s/.*\<$pattern\>=\([^&]*\)&*.*/\1/" file

Code:
$ cat file
CTRY=GM&PROJTYPE=SP&PROJECTTYPE=Small+Project

Code:
$ ./test.sh
GM
SP
Small+Project

So you would still use the grep command, and the above sed command would substitute for the cut command.
This User Gave Thanks to hanson44 For This Post:
# 3  
Old 04-29-2013
Try this
Code:
if [ $1 == CTRY ];  then

awk -F "&" '{print $1}' delete.txt | awk -F "=" '{print $2}'
elif [ $1 == PROJTYPE ]; then
awk -F "&" '{print $2}' delete.txt | awk -F "=" '{print $2}'
else
awk -F "&" '{print $3}' delete.txt | awk -F "=" '{print $2}'
fi

---------- Post updated at 01:41 AM ---------- Previous update was at 01:04 AM ----------

try this one!
Code:
cat file.txt
CTRY=GM&PROJTYPE=SP&PROJECTTYPE=Small+Project

Script:

Code:
pattern=$1
 awk -F "$pattern=" '{print $2}' file.txt | awk -F "&" '{print $1}'

Output:
Code:
./script.sh CTRY
GM
 ./script.sh PROJTYPE
SP
./script.sh PROJECTTYPE
Small+Project


Last edited by Scrutinizer; 04-29-2013 at 04:02 AM.. Reason: code tags
This User Gave Thanks to Revansidhu For This Post:
# 4  
Old 04-29-2013
Let me know if you would like me to explain anything about the regular expression in the sed command.
# 5  
Old 04-29-2013
If I read your request correctly, this might satisfy it ($1 holds "CTRY"):
Code:
$ awk -F"&" '{for (i=1; i<=NF; i++) if ($i ~ "^"PAT) {sub ("^"PAT"=", "", $i); print $i}}' PAT=$1 file
GM

Put it into a function or shell script, so (shell's) $1 (first parameter) will contain your search pattern.
This User Gave Thanks to RudiC For This Post:
# 6  
Old 04-29-2013
Another approach:
Code:
str="CTRY"
awk -F'[=&]' -v P="$str" '{for(i=1;i<=NF;i++) if($i==P) print $(i+1)}' file

# 7  
Old 04-29-2013
@RudiC - Thanks, Your understanding is 100% complete.

It's working

---------- Post updated at 05:05 AM ---------- Previous update was at 04:07 AM ----------

@hanson44 - yes please explain

@RudiC - The third filed giving value as Small+Project, can we replace the + with space;(Small Project)

---------- Post updated at 06:15 AM ---------- Previous update was at 05:05 AM ----------

Can't we replace the + sign with space
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Problem with getting awk to multiply a field by a value set based on condition of another field

Hi, So awk is driving me crazy on this one. I have searched everywhere and read man, docs and every related post Google can find and still no luck. The actual files I need to run this on are sensitive in nature, but it is the same thing as if I needed to calculate weighted grades for multiple... (15 Replies)
Discussion started by: cotilloe
15 Replies

2. Shell Programming and Scripting

awk to update field using matching value in file1 and substring in field in file2

In the awk below I am trying to set/update the value of $14 in file2 in bold, using the matching NM_ in $12 or $9 in file2 with the NM_ in $2 of file1. The lengths of $9 and $12 can be variable but what is consistent is the start pattern will always be NM_ and the end pattern is always ;... (2 Replies)
Discussion started by: cmccabe
2 Replies

3. Shell Programming and Scripting

awk to adjust coordinates in field based on sequential numbers in another field

I am trying to output a tab-delimited result that uses the data from a tab-delimited file to combine and subtract specific lines. If $4 matches in each line then the first matching sequential $6 value is added to $2, unless the value is 1, then the original $2 is used (like in the case of line... (3 Replies)
Discussion started by: cmccabe
3 Replies

4. Shell Programming and Scripting

Display combination of 4 field uniqe record and along with concatenate 5th and 6th field.

Table ACN|NAME|CITY|CTY|NO1|NO2 115|AKKK|ASH|IND|10|15 115|AKKK|ASH|IND|20|20 115|AKKK|ASH|IND|30|35 115|AKKK|ASH|IND|30|35 112|ABC|FL|USA|15|15 112|ABC|FL|USA|25|20 112|ABC|FL|USA|25|45 i have written shell script using cut command and awk programming getting error correct it and add... (5 Replies)
Discussion started by: udhal
5 Replies

5. Shell Programming and Scripting

Command/script to match a field and print the next field of each line in a file.

Hello, I have a text file in the below format: Source Destination State Lag Status CQA02W2K12pl:D:\CAQA ... (10 Replies)
Discussion started by: pocodot
10 Replies

6. Linux

How do I format a Date field of a .CSV file with multiple commas in a string field?

I have a .CSV file (file.csv) whose data are all enclosed in double quotes. Sample format of the file is as below: column1,column2,column3,column4,column5,column6, column7, Column8, Column9, Column10 "12","B000QRIGJ4","4432","string with quotes, and with a comma, and colon: in... (3 Replies)
Discussion started by: dhruuv369
3 Replies

7. Shell Programming and Scripting

Plz Help. Compare 2 files field by field and get the output in another file.

Hi Freinds, I have 2 files . one is source.txt and second one is target.txt. I want to keep source.txt as baseline and compare target.txt. please find the data in 2 files and Expected output. Source.txt 1|HYD|NAG|TRA|34.5|1234 2|CHE|ESW|DES|36.5|134 3|BAN|MEH|TRA|33.5|234... (5 Replies)
Discussion started by: i150371485
5 Replies

8. Shell Programming and Scripting

AWK: Pattern match between 2 files, then compare a field in file1 as > or < field in file2

First, thanks for the help in previous posts... couldn't have gotten where I am now without it! So here is what I have, I use AWK to match $1 and $2 as 1 string in file1 to $1 and $2 as 1 string in file2. Now I'm wondering if I can extend this AWK command to incorporate the following: If $1... (4 Replies)
Discussion started by: right_coaster
4 Replies

9. Shell Programming and Scripting

awk, comma as field separator and text inside double quotes as a field.

Hi, all I need to get fields in a line that are separated by commas, some of the fields are enclosed with double quotes, and they are supposed to be treated as a single field even if there are commas inside the quotes. sample input: for this line, 5 fields are supposed to be extracted, they... (8 Replies)
Discussion started by: kevintse
8 Replies

10. Shell Programming and Scripting

Sort alpha on 1st field, numerical on 2nd field (sci notation)

I want to sort alphabetically on the first field and sort in descending numerical order on the 2nd field. With a normal "sort -r -n" it does this: abc ||| 5e-05 ||| bla abc ||| 3 ||| ble def ||| 1 ||| abc def ||| 0.2 ||| def As you can see it ignores the fact that 5e-05 is actually 0.00005... (1 Reply)
Discussion started by: FrancoisCN
1 Replies
Login or Register to Ask a Question