Need help with sed/awk command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help with sed/awk command
# 22  
Old 10-21-2014
Quote:
Originally Posted by linuxUser_
in this case pwd is not working.
I want to give file name with current directory path Smilie
what to do?
What case would that be?
What did you do?
What shell are you using?
What was the output?
How is not working?
What do you expect from us?
# 23  
Old 10-22-2014
Quote:
Originally Posted by Aia
What case would that be?
What did you do?
What shell are you using?
What was the output?
How is not working?
What do you expect from us?
Have you gone through complete thread?
If so, what you didn't understand?
by the way its bash script.

Thanks & Regards,
linuxUser_

---------- Post updated at 09:48 AM ---------- Previous update was at 09:42 AM ----------

what is
Code:
./dev/fd/63: No such file or directory

??

when I tried to print all the assignments to a file I got this error.
Code:
.<(awk     '/^ *functions */       {F=1; next}
         F                      {CNT=CNT+gsub(/{/,"")-gsub(/}/,""); if (CNT==1 && !/^ *$/) print "dictname[" ++dc "]=" $0}
         /fields/               {for (i=3; i<NF; i++) print "fieldname[" ++fc "]="$i}
         /^ *surfaces */        {S=1; next}
         S                      {gsub(/[^0-9A-Za-z]*/, ""); if (!/^ *$/) {print "planename[" ++pc "]=" $0; S=0}}
        ' file)

# 24  
Old 10-22-2014
I second Aia asking those questions. Being very specific about your system, requirements, output, errors, and way of work helps us help you. No need to be curt. On top, using the proposals exactly the way they are posted (including spaces!) prevents errors from happening.

Regarding your previous post, separate the dot from the less than sign by a space.

Last edited by RudiC; 10-22-2014 at 05:52 AM..
# 25  
Old 10-22-2014
Moderator's Comments:
Mod Comment Posting "Does not work" without explanation does not help you or anyone. If a command does not work for you, please show the exact circumstances you used it, and the exact error or malfunction you received. Do not paraphrase errors, or post the text as links, images, or attachments if you can avoid it: Paste the exact message, in code tags, like [code] text [/code] or by selecting the text and using the Image button.

Thank you.

The UNIX and Linux Forums
This User Gave Thanks to Corona688 For This Post:
# 26  
Old 10-22-2014
Code:
Code:
. <(awk     '/^ *functions */       {F=1; next}
         F                      {CNT=CNT+gsub(/{/,"")-gsub(/}/,""); if (CNT==1 && !/^ *$/) print "dictname[" ++dc "]=" $0}
         /fields/               {for (i=3; i<NF; i++) print "fieldname[" ++fc "]="$i}
         /^ *surfaces */        {S=1; next}
         S                      {gsub(/[^0-9A-Za-z]*/, ""); if (!/^ *$/) {print "planename[" ++pc "]=" $0; S=0}}
        ' file)

echo "0"${dictname[0]} ${planename[0]} ${fieldname[0]} 
echo "1"${dictname[1]} ${planename[1]} ${fieldname[1]} 
echo "2"${dictname[2]} ${planename[2]} ${fieldname[2]} 
echo "3"${dictname[3]} ${planename[3]} ${fieldname[3]} 
echo "4"${dictname[4]} ${planename[4]} ${fieldname[4]} 
echo "5"${dictname[5]} ${planename[5]} ${fieldname[5]} 
echo "6"${dictname[6]} ${planename[6]} ${fieldname[6]} 
echo "7"${dictname[7]} ${planename[7]} ${fieldname[7]} 
echo "8"${dictname[8]} ${planename[8]} ${fieldname[8]} 
echo "9"${dictname[9]} ${planename[9]} ${fieldname[9]} 
echo "10"${dictname[10]} ${planename[10]} ${fieldname[10]} 
echo "11"${dictname[11]} ${planename[11]} ${fieldname[11]} 
echo "12"${dictname[12]} ${planename[12]} ${fieldname[12]} 
echo "13"${dictname[13]} ${planename[13]} ${fieldname[13]}

file:
Code:
functions
{
    planeDictName1
    {
        type            surfaces;
        functionObjectLibs ( "libsampling.so" );
        outputControl   timeStep;
        surfaceFormat   vtk;
        fields          ( p U T );
        interpolationScheme cellPoint;
        surfaces
        (
            planeName1
            {
                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
        (
            planeName2
            {
                type plane;
                    basePoint (0.0 0.0 0.075);
                    normalVector (0 0 1);
                triangulate false;
                interpolate true;
            }
        );
    }
}

result:

Code:
/dev/fd/63: line 1: planeDictName1: command not found
/dev/fd/63: line 6: planeDictName2: command not foundfound
0
1 planeName1 p
2 planeName2 U
3 T
4 p
5 U
6 
7 
8 
9 
10
11
12
13

testPurpose:

Code:
above test is done to see whether the script able to read names highlighted with red colour from a file.

outcome:
Code:
code is able to read planeName and fields but unable to read dictName. Was stuck here.

Explanation for frustrating answer:
If you see complete threat, story follows like this:
I: is it possible to assign read values to shell variables?
RudiC: No, awk wont allow shell variables. You could try printing all the assignments to a file and then source that file from your shell.
I tried doing that like as he said but missed space between
Code:
.

and
Code:
<

. So it ended up as an error.
very much frustrated thing is people who taught to help not looking at complete threat to understand the problem and wanted me to explain complete story.

Very simple question: RudiC able to understand the issue and Aia didn't, why?

I appreciate his helping nature and time he spent for me. But its not good to recollect the same thing again and again.

I really like people here because of their helping nature and patience to answer silly things even.

I am really sorry if you think I was curt.

Thanks & Regards,
linuxUser_
# 27  
Old 10-22-2014
Quote:
Originally Posted by linuxUser_
very much frustrated thing is people who taught to help not looking at complete threat to understand the problem and wanted me to explain complete story.

Very simple question: RudiC able to understand the issue and Aia didn't, why?

I appreciate his helping nature and time he spent for me. But its not good to recollect the same thing again and again.

I really like people here because of their helping nature and patience to answer silly things even.

I am really sorry if you think I was curt.

Thanks & Regards,
linuxUser_
I have followed this thread from the beginning, and I have seen how RudiC has tried to coach you all along, I could have intervene at any point, but I did not want to confuse you and make RudiC work harder, since it was not a trivial thing what you were asking.

However, in post #21 you added:
Quote:
in this case pwd is not working.
I want to give file name with current directory path
what to do?
pwd is a built-in command of many shells, we don't know how is not working for you, we don't know what you have done with the information given to you, we don't know what case are you talking about by just reference. Anything else it would be guessing, regardless of previous thread or posts.

My questions were there to give you the opportunity of responding to this lack of current information. Especially, what does pwd has to do with it and what were you trying to do, currently.

My suggestion to you would be to leave any kind of frustration aside and recognize that we are here to help you, if we can (most of the time depends on you), whether we get it or not.

Last edited by Aia; 10-22-2014 at 02:07 PM.. Reason: grammar
# 28  
Old 10-22-2014
This is an effort at doing it 'properly', counting brackets and fields. I had to cheat a lot, by converting it into something more readily understandable, stripping out all whitespace and newlines then adding my own where they look appropriate. This makes it consistent enough to handle in a shell language.

Code:
#!/bin/bash

INPUTFILE="data"

# Strip out all newlines and whitespace, flattening it into something
# we can process line-by-line.
# Then 'xargs' eats quotes.
# Then we feed it into awk, which parses it counting { } ( ),
# and extracts the fields of interest.
sed 's/[)][ \r\n\t]*;/)/g;s/[{}();]/ & /g' "$INPUTFILE" |
        tr -s ' \n' '\n' | xargs -n 1 | awk '
/;/ {   L=0 ; next }

/[{(]/ {
        if(DEP == 1)    PDNAME[++PDN]=STR[1]
        if(S ~ /#surfaces$/) PNAME[++PN]=STR[1]

        S=S"#"STR[1]
        DEP++

        L=0
#       printf(">> %s\n", S);
        next
}

/[})]/ {
        if(S ~ /#fields$/) {
                C=""
                for(N=1; N<=L; N++) C = C " " STR[N]
                FIELDS[++F]=substr(C,2);
        }

        L=0
        sub(/#[^#]*$/, "", S);
        DEP--
#       printf("<< %s\n", S);
        next
}

{       STR[++L]=$0     }

END {
        printf("planename=(");
        for(N=1; N<=PN; N++)    printf(" \"%s\"", PNAME[N]);
        printf(" )\n");

        printf("planedictname=(");
        for(N=1; N<=PDN; N++)   printf(" \"%s\"", PDNAME[N]);
        printf(" )\n");

        printf("fields=(");
        for(N=1; N<=F; N++)     printf(" \"%s\"", FIELDS[N]);
        printf(" )\n");
}' > /tmp/$$

# Read this into the shell to set the arrays
. /tmp/$$
# Remove temp file
rm -f /tmp/$$

echo "planedictname ${planedictname[@]}"
echo "planename ${planename[@]}"
echo "fields ${fields[@]}"

Code:
$ ./trans.sh

planedictname planeDictName planeDictName2
planename planeName1 planeName2
fields p U T p U

$

This User Gave Thanks to Corona688 For This Post:
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