Extract data between ","


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Extract data between ","
# 8  
Old 03-06-2013
Tell us exactly what happens, word for word, letter for letter, keystroke for keystroke, otherwise we're just guessing.

Another rewrite:

Code:
OLDIFS="$IFS"
IFS=","

while IFS="$OLDIFS" read KEY DATA
do
        echo "Got line with key $KEY and data $DATA"
        for X in $DATA
        do
                grep "$X" datafile
        done
done < listfile

# 9  
Old 03-07-2013
Linux

- OK here goes the whole scenario. I will separate it in Part 1 and part 2 just to indicate untill where I have been successful. Part 1 I have been able to do.

But the second part is way too difficult. Smilie

Part 1

[*]Read input/ search criteria from user and look for it in start.txt[*]The result is then sorted (as there were dulplicated data) and display the result in the format

INPUT XX1,XX2,XX3 (For Eg. the XX1 can represent any data depending on the first Input)

This is in turn stored in result.txt

Part 2

[*] Take the result stored in result.txt and extract the data between the commas[*] grep that extracted data on servers.txt[*] Store and/or display the greped result under the line INPUT XX1,XX2,XX3

Last edited by vbe; 03-11-2013 at 03:07 PM.. Reason: restored to original...
# 10  
Old 03-07-2013
What did you do, and in what way did it not work?
# 11  
Old 03-07-2013
Code:
#! /bin/bash
wrd=`cat file.txt`
rr=( $(echo $wrd | sed 's/,/ /g' ) );
len=${#rr[*]};
for (( i=0;i<$len;i++ ))
do
temp=${rr[$i]};
grep $temp test.txt;
done

# 12  
Old 03-07-2013
I can see why that didn't work. `cat file` isn't just a useless use of cat, it also doesn't do what you want -- it will split on all whitespace, not just lines.

Did you try any of our suggestions as-is, or did you change them into `cat file` too?

Trying something more like your code:

Code:
OLDIFS="$IFS"
# Split on spaces and commas
IFS=", "
while read LINE
do
        set -- $LINE # $1=INPUT $2=XX1 $3=XX2 ...

        shift # $1=XX1 $2=XX2 ...
        while [ "$#" -gt 0 ]
        do
                grep $1 test.txt # grep XX1 test.txt
                shift # $1=XX2 ...
        done
done < file.txt
IFS="$OLDIFS"

This User Gave Thanks to Corona688 For This Post:
# 13  
Old 03-07-2013
For a less NxM costly solution, extract all the line numbers in tst.txt as a sorted unique list into file temp1, and prefix all the lines from test.txt with the line's NN and a space, sort it into file temp2, join them and remove the key:
Code:
sed '
  s/.* //
  s/,/\
/g
 ' file.txt | sort -u >temp1
 
sed -n 's/^.* \([0-9][0-9]*\) *$/\1 &/p' test.txt | sort -u >temp2
 
join temp1 temp2 | sed 's/^[0-9][0-9]* //'

If you want the original test.txt order, I can number the lines before adding the key and resort the result before stripping the line numbers.

Last edited by DGPickett; 03-08-2013 at 02:15 PM.. Reason: Accept variable number of digits.
# 14  
Old 03-08-2013
- It worked Corona688...

now i just need to sort it and uniq it...

Perfect thank you.

Thank you all.

Last edited by vbe; 03-11-2013 at 03:08 PM.. Reason: restored original content
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Beginners Questions & Answers

Extract delta records using with "comm" and "sort" commands combination

Hi All, I have 2 pipe delimited files viz., file_old and file_new. I'm trying to compare these 2 files, and extract all the different rows between them into a new_file. comm -3 < sort file_old < sort file_new > new_file I am getting the below error: -ksh: sort: cannot open But if I do... (7 Replies)
Discussion started by: njny
7 Replies

4. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

5. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

6. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

7. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

8. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question