Problem with a code.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem with a code.
# 1  
Old 07-30-2016
Wrench Problem with a code.

Guys i have one file and i want the o/p from that file like below

This is my sample file and i want below things from it.

Name:
Sate just below the name:
And retention Level

Code:
  Name: MEANS_SLP_DAILY
                               State: inactive
                     Retention Level: 3 (1 month)
                               State: active
                     Retention Level: 3 (1 month)
                               State: active
                     Retention Level: 3 (1 month)
                               State: active
                                Name: MEANS_SLP_WEEKLY
                               State: inactive
                     Retention Level: 3 (1 month)
                               State: active
                     Retention Level: 3 (1 month)
                               State: active
                     Retention Level: 3 (1 month)
                               State: active
                                Name: SLP_Irv_Arlington_Test
                               State: active
                     Retention Level: 1 (2 weeks)
                               State: active
                     Retention Level: 1 (2 weeks)
                               State: active
                     Retention Level: 1 (2 weeks)
                               State: active

I have tried this code for the above file but here i am not getting retention level. I also want to grep retention level. Please suggest
Code:
 cat /tmp/1 | grep 'Name' -A1
                                Name: MEANS_SLP_DAILY
                               State: inactive
--
                                Name: MEANS_SLP_WEEKLY
                               State: inactive
--
                                Name: SLP_Irv_Arlington_Test
                               State: active

I want my final o/p look like below

Code:
Name: MEANS_SLP_DAILY      State: inactive    Retention Level: 3 (1 month)  Retention Level: 3 (1 month)      Retention Level: 3 (1 month)
Name: MEANS_SLP_Weekly     State: inactive    Retention Level: 3 (1 month)  Retention Level: 3 (1 month)      Retention Level: 3 (1 month)


Last edited by nirjhar17; 07-30-2016 at 03:07 AM..
# 2  
Old 07-30-2016
Hello nirjhar17,

Please use code tags in spite of icode tags for Input_file.
Could you please try following and let me know if this helps you.
Code:
awk '($0 ~ /^Name:/ && NR !=1){print A;A="";} {A=A?A OFS $0:$0}' OFS="\t"  Input_file

Output will be as follows.
Code:
Name: MEANS_SLP_DAILY	State: inactive	Retention Level: 3 (1 month)	State: active	Retention Level: 3 (1 month)	State: active	Retention Level: 3 (1 month)	State: active
Name: MEANS_SLP_WEEKLY	State: inactive	Retention Level: 3 (1 month)	State: active	Retention Level: 3 (1 month)	State: active	Retention Level: 3 (1 month)	State: active

Thanks,
R. Singh

Last edited by RavinderSingh13; 07-30-2016 at 03:08 AM.. Reason: Added OFS="\t" mow in solution.
# 3  
Old 07-30-2016
Thanks for your help! I am trying on Cygwin and i am not getting any output from the code provided. Also, if you look in your output you are also receiving "State" after Retention Level, But my requirement is i want to take "State" only after the Name.

E.g
Code:
Name :- MEANS_SLP_DAILY
State  :- inactive  " i want this one"

Retention Level: 3 (1 month)
 State: active "no need"

Moderator's Comments:
Mod Comment Please use CODE tags for all sample input, sample output, and code segments.

Last edited by Don Cragun; 07-30-2016 at 03:17 AM.. Reason: Add CODE tags.
# 4  
Old 07-30-2016
Quote:
Originally Posted by nirjhar17
Thanks for your help! I am trying on Cygwin and i am not getting any output from the code provided. Also, if you look in your output you are also receiving "State" after Retention Level, But my requirement is i want to take "State" only after the Name.

E.g
Code:
Name :- MEANS_SLP_DAILY
State  :- inactive  " i want this one"

Retention Level: 3 (1 month)
 State: active "no need"

Moderator's Comments:
Mod Comment Please use CODE tags for all sample input, sample output, and code segments.
Hello nirjhar17,

I don't have cygwin o.s with me so couldn't test it, that is why it is recomended to let us know all the terms and condition into your very first post along with your O.S name in which you are expecting the code to work. Could you please try following and let me know how it goes then.
Code:
awk '($0 ~ /^Name:/ && NR !=1){print A;A="";} {if((q ~ /^Name:/ && $0 ~ /^State:/) || ($0 !~ /^State:/)){A=A?A OFS $0:$0}};{q=$0}' OFS="\t"  Input_file

Output will be as follows.
Code:
Name: MEANS_SLP_DAILY	State: inactive	Retention Level: 3 (1 month)	Retention Level: 3 (1 month)	Retention Level: 3 (1 month)
Name: MEANS_SLP_WEEKLY	State: inactive	Retention Level: 3 (1 month)	Retention Level: 3 (1 month)	Retention Level: 3 (1 month)

Thanks,
R. Singh
# 5  
Old 07-30-2016
I have tried in linux too, but this code is not giving me any output.

Code:
[root@ip-172-31-33-211 ec2-user]# cat /tmp/1 |  awk '($0 ~ /^Name:/ && NR !=1){print A;A="";} {if((q ~ /^Name:/ && $0 ~ /^State:/) || ($0 !~ /State:/)){A=A?A OFS $0:$0}};{q=$0}' OFS="\t"

[root@ip-172-31-33-211 ec2-user]#

# 6  
Old 07-30-2016
Hello nirjhar17,

You need not to use cat alnog with awk, awk could read the Input_file itself. It is working for me fine in BASH, following is the Input_file.
Code:
cat Input_file
Name: MEANS_SLP_DAILY
State: inactive
Retention Level: 3 (1 month)
State: active
Retention Level: 3 (1 month)
State: active
Retention Level: 3 (1 month)
State: active
Name: MEANS_SLP_WEEKLY
State: inactive
Retention Level: 3 (1 month)
State: active
Retention Level: 3 (1 month)
State: active
Retention Level: 3 (1 month)
State: active
Name: SLP_Irv_Arlington_Test
State: active
Retention Level: 1 (2 weeks)
State: active
Retention Level: 1 (2 weeks)
State: active
Retention Level: 1 (2 weeks)
State: active

Then following is the code for same.
Code:
awk '($0 ~ /^Name:/ && NR !=1){print A;A="";} {if((q ~ /^Name:/ && $0 ~ /^State:/) || ($0 !~ /State:/)){A=A?A OFS $0:$0}};{q=$0}' OFS="\t"   Input_file

Output will be as follows.
Code:
Name: MEANS_SLP_DAILY	State: inactive	Retention Level: 3 (1 month)	Retention Level: 3 (1 month)	Retention Level: 3 (1 month)
Name: MEANS_SLP_WEEKLY	State: inactive	Retention Level: 3 (1 month)	Retention Level: 3 (1 month)	Retention Level: 3 (1 month)

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 7  
Old 07-30-2016
Your spec is far from clear; this is based on what I read from it (print the "state" line immediately AFTER "Name" line only, then print "Retention" lines up to next "Name" line. Not sure if you want "inactive" states only?):
Code:
awk '
        {sub (/^ */, _)
        }
/Name/  {printf "%s%s", TRS, $0
         TRS = RS
         NM = 1
         next
        }
NM      {printf "\t%s", $0
         NM = 0
         next   
        }
/Ret/   {printf "\t%s", $0
        }
END     {printf RS
        }
' file
Name: MEANS_SLP_DAILY	State: inactive	Retention Level: 3 (1 month)	Retention Level: 3 (1 month)	Retention Level: 3 (1 month)
Name: MEANS_SLP_WEEKLY	State: inactive	Retention Level: 3 (1 month)	Retention Level: 3 (1 month)	Retention Level: 3 (1 month)
Name: SLP_Irv_Arlington_Test	State: active	Retention Level: 1 (2 weeks)	Retention Level: 1 (2 weeks)	Retention Level: 1 (2 weeks)

Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Problem with a code.

Guys i have one file and i want the o/p from that file like below This is my sample file and i want three things from it. Name: State just below the Name: dont want the state under the Retention Level: And retention Level Name: MEANS_SLP_DAILY State:... (1 Reply)
Discussion started by: nirjhar17
1 Replies

2. Shell Programming and Scripting

Unknown (probably) simple problem with my code

I'm relatively new to both UNIX and Linux and slightly less new at programming. But I can't figure out why this won't run properly. It's meant to calculate the GCD of two numbers (simple enough, you'd think). And I designed it myself and it looks good to me and my instructor won't respond. If... (1 Reply)
Discussion started by: Sevchenko
1 Replies

3. Shell Programming and Scripting

Escape code problem again

Now theres another problem. I would like to output not just a colored block, but how would I output not a solid block character, but a shaded block instead? Please help. I'm writing a library for these codes and this would really help. (4 Replies)
Discussion started by: tinman47
4 Replies

4. Shell Programming and Scripting

Perl code Out of memory problem

Hi I am working with a 3.0 GB file and running the following script to process it. After running for 15 minutes, the script stops saying Out of memory or Killed. Can the experts suggest where my code can be improved to save memory? Thanks in advance. #! usr/bin/perl use warnings; open... (3 Replies)
Discussion started by: polsum
3 Replies

5. Programming

Code problem

Hey just wondering if someone can tell me the right line of code to use. Basically my product codes for an ecommerce site all begin with three letters and an '/' sign e.g ABC/1234 would map to the brand ABC in my excell file(product upload mapping) This was done as the csv generating from... (0 Replies)
Discussion started by: romeo5577
0 Replies

6. Windows & DOS: Issues & Discussions

Problem compiling C++ Code in Cygwin

Hello everyone. I just recently installed Cygwin and I am running it under Windows 7. My problem is that I cannot seem to compile any C++ code with g++. I've tried to compile C Code using gcc and that works just fine. But Whenever I try to compile some C++ code, g++ throws a whole bunch of... (6 Replies)
Discussion started by: Anlex
6 Replies

7. Shell Programming and Scripting

Ftp code problem

Hello I am trying to write a script that sends files via ftp from one server to another, i am using AIX 5.1. and bash shell to write my code. I get an error when trying to run the following lines of code ftp -n aptsbou01 <<! user $username $password binary ... (4 Replies)
Discussion started by: kswaraj
4 Replies

8. Programming

problem with this code

This code is not working properly because it dont open the requested file. I am not able to find out what the error is?? can anyone fix the error for me?? #include <sys/types.h> #include <sys/wait.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include... (2 Replies)
Discussion started by: badshah
2 Replies
Login or Register to Ask a Question