Need help with sed/awk command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help with sed/awk command
# 1  
Old 10-20-2014
Need help with sed/awk command

Dear all,

I have a file named as fileName with following entities,
Code:
functions
{
    planeDictName
    {
        type            surfaces;
        functionObjectLibs ( "libsampling.so" );
        outputControl   timeStep;
        surfaceFormat   vtk;
        fields          ( p U );
        interpolationScheme cellPoint;
        surfaces
        (
            planeName
            {
                type plane;
                    basePoint (0.0 0.0 0.025);
                    normalVector (0 0 1);
                triangulate false;
                interpolate true;
            }
        );
    }


    planeDictName2
    {
        type            surfaces;
        functionObjectLibs ( "libsampling.so" );
        outputControl   timeStep;
        surfaceFormat   vtk;
        fields          ( p U );
        interpolationScheme cellPoint;
        surfaces
        (
            planeName
            {
                type plane;
                    basePoint (0.0 0.0 0.075);
                    normalVector (0 0 1);
                triangulate false;
                interpolate true;
            }
        );
    }
}

Entities in red colour are user defined names. I want to read these names using awk, grep or sed commands and store in shell variables.

Can somebody help me?

Thanks & Regards,
linuxUser_
# 2  
Old 10-20-2014
What have you tried?
# 3  
Old 10-20-2014
Quote:
Originally Posted by Corona688
What have you tried?
too tough question. Smilie
I don't see any condition to read the parameters in this format except functions :-o.
There is no rule to provide it like this
Code:
functions {     planeDictName     {

it can be something like this as well.
Code:
functions {





    planeDictName     {

string between two limiters { and } in this case will not work but it may be done as follows
Code:
sed 's/.*{\(.*\)}\.*/\1/' file

but I am still dumb in my problem.


Thanks & Regards,
linuxUser_

---------- Post updated at 11:03 PM ---------- Previous update was at 10:54 PM ----------

Ideal way for the solution may be,

create a string of length n, (2 in this case as only 2-plane's data needs to be written).

shell parameters:

dictName[1] = planeDictName
dictName[2] = planeDictName2
:
:
dictName[n] = .... dicts as many as present.

planeName[1] = planeDictName
planeName[2] = planeDictName2
:
:
planeName[n] = .... planes as many as present.


and fields .... there is no limit for number of fields...


1st question,
Is shell script is good choice for this problem?
# 4  
Old 10-20-2014
Well, what you're asking for isn't trivial. There's not a one-liner I can wave at you to fix it, especially when you point out that your data isn't "pretty" the way you presented it. Neither awk nor sed nor most commandline tools are really suited for parsing recursive grammar. You have to chew through it character by character.

Do you have a C compiler?
# 5  
Old 10-20-2014
Quote:
Originally Posted by Corona688
Well, what you're asking for isn't trivial. There's not a one-liner I can wave at you to fix it, especially when you point out that your data isn't "pretty" the way you presented it. Neither awk nor sed nor most commandline tools are really suited for parsing recursive grammar. You have to chew through it character by character.

Do you have a C compiler?

Yes, gcc
# 6  
Old 10-20-2014
I guess the regex [Pp]lane.*[Nn]ame.* (although ideal for the eample given) won't work for the general case. Try to describe in plain English WHAT you want to extract.

---------- Post updated at 20:02 ---------- Previous update was at 19:55 ----------

Maybe a first step :
Code:
awk '{CNT=CNT + gsub (/{/,"") - gsub(/}/,""); if (CNT==1 && !/^ *$/) print}' file
    planeDictName
    planeDictName2

This User Gave Thanks to RudiC For This Post:
# 7  
Old 10-20-2014
in functions{}, there will be many sub-dicts.
one of them is
Code:
    planeDictName
     {
         type            surfaces;
         functionObjectLibs ( "libsampling.so" );
         outputControl   timeStep;
         surfaceFormat   vtk;
         fields          ( p U );
         interpolationScheme cellPoint;
         surfaces
         (
             planeName
             {                 type plane;
                     basePoint (0.0 0.0 0.025);
                     normalVector (0 0 1);
                 triangulate false;
                 interpolate true;
             }
         );
     }

in this I want to store names(in red colour) in shell variables

for this case, consider shell variables
dictName, planeName, fieldNames

dictName = planeDictName
planeName = planeName
fieldNames[1] = p
fielsNames[2] = U
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with sed/awk command

Hi All, This is my first thread. Hopefully you guys can help me out. I have a csv file, that provides access to managers to a tool. The file is loaded onto our server containing all the assc id's with a trailing comma. For ex: 182950, 123456, However, we receive a file that... (8 Replies)
Discussion started by: Prateek Dubey
8 Replies

2. Shell Programming and Scripting

Need help with sed/awk command

Dear ALL, I am still struggling with some basic sed operations. I want to change path in a file as shown below: case_OM = PV4Reader( FileName='/home/linuxUser/demoCases/s1/case/case.OM' ) to case_OM = PV4Reader( FileName='/home/linuxUser/demoCases/s2/case/case.OM' ) In this file there... (5 Replies)
Discussion started by: linuxUser_
5 Replies

3. Shell Programming and Scripting

sed and awk giving error ./sample.sh: line 13: sed: command not found

Hi, I am running a script sample.sh in bash environment .In the script i am using sed and awk commands which when executed individually from terminal they are getting executed normally but when i give these sed and awk commands in the script it is giving the below errors :- ./sample.sh: line... (12 Replies)
Discussion started by: satishmallidi
12 Replies

4. Shell Programming and Scripting

Command line - awk, sed

My input file gfile values is CTRY=GM&PROJTYPE=SP&PROJECTTYPE=Small+Project If i am giving PROJECTTYPE then it must give Small Project awk -F"&" '{for (i=1; i<=NF; i++) if ($i ~ "^"PAT) {sub ("^"PAT"=", "", $i); sed 's/'+'/""/' $i ; print $i }}' PAT=$1 ... (6 Replies)
Discussion started by: nag_sathi
6 Replies

5. Shell Programming and Scripting

SED/AWK command

Hi All, I have a file which has following lines : - Deploy XXX application <server-address> - info <server-address> - Deploy XXX application <server-address> - info <server-address> - Deploy XXX application <server-address> - info <server-address> I want output like this way in... (8 Replies)
Discussion started by: bhaskar_m
8 Replies

6. Shell Programming and Scripting

Interpret sed and awk in the below command.

Could you interpret the following sed and awk command for me? command: cat tempfile2 |sed "s/\(BUILD-3-.*-\.-\)\(.*\..*\..*\)/\2/" | awk '{printf "%-8.8s %-23.23s %-30.30s %-50.50s\n", $1,$2,$3,substr($0,index($0,$4))}' > outfile2 2>/dev/null input:data in tempfile2... (5 Replies)
Discussion started by: vj8436
5 Replies

7. Shell Programming and Scripting

awk/sed Command : Parse parameter file / send the lines to the ksh export command

Sorry for the duplicate thread this one is similar to the one in https://www.unix.com/shell-programming-scripting/88132-awk-sed-script-read-values-parameter-files.html#post302255121 Since there were no responses on the parent thread since it got resolved partially i thought to open the new... (4 Replies)
Discussion started by: rajan_san
4 Replies

8. Shell Programming and Scripting

sed for this awk command

Hi what would be the sed equivalent of this awk command: awk '/$getsn/{getline;next}{print}' file It deletes the variable found and the next line after it in a file. Thanks (3 Replies)
Discussion started by: wisher115
3 Replies

9. Shell Programming and Scripting

Help with Sed or AWK command!!!

Hi, I need help with Sed or AWk command.i want to remove all the numerals from the file name.These files are stored within a text file and after the numerals are removed,i need to redirect its output to another new .txt file. Input: aa_1002985_952.xml aa_bb_032207.txt... (5 Replies)
Discussion started by: kumarsaravana_s
5 Replies

10. UNIX for Dummies Questions & Answers

What do you know about the Sed and Awk command??

I just need some information on what they can be use for and whatever else there is. anything you know, state here (2 Replies)
Discussion started by: TRUEST
2 Replies
Login or Register to Ask a Question