sort with condition and insert blank line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sort with condition and insert blank line
# 1  
Old 05-30-2011
sort with condition and insert blank line

Hi,
I have a file with no blank line anywhere
Its a conf file, The lines between [groups] and starts with "#" should be sort out with the first three characters(characters are between (a-z)). and insert a blank space in between the uniq lines. For clear understanding ,pls find the below input file contains.
and also have to insert a blank line before the line which starts with either "[" or "#"
Input contents of a file

____________________________________________________
Code:
[groups]
abc = 
abc_read =
test =
test_write=
developer=
developer_read=
bac_read=
 bac=
#######################
[abc:/bcd/cde]
@test_write = rw
[bcd:/xyz/yzx]
@test= rw
################
[lmn:/bcd/cde]
  @test_write = rw
 [lmn:/xyz/yzx]
  @test= rw
############################

The output required is as below
________________________________________________________
Code:
[groups]

abc = 
 abc_read =

bac_read=
  bac=

developer=
 developer_read=

test =
 test_write=

#######################################
[abc:/bcd/cde]
@test_write = rw

[bcd:/xyz/yzx]
@test= rw

################
[lmn:/bcd/cde]
 @test_write = rw

[lmn:/xyz/yzx]
 @test= rw

############################

Pls suggest ideas to implement the same

Great day
Anil.G

Last edited by pludi; 05-30-2011 at 05:13 AM..
# 2  
Old 05-30-2011
try this..
not tested Smilie

Code:
whie read line
 echo $line | grep "^\#"
 if [ "$?" ne "0" ]
 then
  echo $line >> /tmp/file
 else
  sort -u /tmp/file
  rm /tmp/file
  echo "################################"
 fi
done < input_file

# 3  
Old 05-30-2011
No dude,, Its not getting the desired output.
I am getting as below
Code:
#######################
[groups]
abc =
abc_read =
bac=
bac_read=
developer=
developer_read=
test =
test_write=
################################
################
@test= rw
@test_write = rw
[abc:/bcd/cde]
[bcd:/xyz/yzx]
################################
############################
@test= rw
@test_write = rw
[lmn:/bcd/cde]
[lmn:/xyz/yzx]
################################


Last edited by radoulov; 05-30-2011 at 06:04 AM.. Reason: Code tags.
# 4  
Old 05-30-2011
Do you have any ####### line between

Code:
[abc:/bcd/cde]
@test_write = rw  
[bcd:/xyz/yzx]
@test= rw

---------- Post updated at 01:29 PM ---------- Previous update was at 01:21 PM ----------

Try this one:
Code:
    awk '{
if($0~/^\[/)
{
    n =asort(arr)
    for(i=1;i<=n;i++)
    printf "%s\n",arr[i] 
    delete arr
    if(temp!=""){print temp}
    print $0
    temp=""
    
}
else if($0!~/^\#/)
{
    arr[substr($0,0,3)]=arr[substr($0,0,3)]$0"\n ";
}
else
{
    temp=$0
}
}

END{n =asort(arr);for(i=1;i<=n;i++){printf "%s\n",arr[i] };print temp}' test.txt


It perfectly worked for me,

Last edited by kumaran_5555; 05-30-2011 at 06:12 AM..
# 5  
Old 05-30-2011
Hi Kumaran
I am getting error as "fatal: function `asort' not defined "

Pls let me know,where i am making mistake.

Rgds
Anil.G
# 6  
Old 05-30-2011
can you try with gawk.

please post which OS and version you are using.
# 7  
Old 05-30-2011
I am using
SunOS 5.9 Generic_118558-14 sun4u sparc and also tried in gawk
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed - How to insert line before the first blank line following a token

Hello. I have a config file (/etc/my_config_file) which may content : # # port for HTTP (descriptions, SOAP, media transfer) traffic port=8200 # network interfaces to serve, comma delimited network_interface=eth0 # set this to the directory you want scanned. # * if have multiple... (6 Replies)
Discussion started by: jcdole
6 Replies

2. Shell Programming and Scripting

Sort a line and Insert sorted word(s) in a line

Hello, I am looking to automate a task - which is updating an existing access control instruction of a server and making sure that the attributes defined in the instruction is in sorted order. The instructions will be of a specific syntax. For example lets assume below listed is one of an... (6 Replies)
Discussion started by: sanjayroc
6 Replies

3. Shell Programming and Scripting

Find regex, place on individual lines and insert blank line before

Hello, I have a file that I want to be able to insert a new line before every instance of a regex. I can get it to do this for each line that contains the regex, but not for each instance. Contents of infile: Test this 1... Test this 2... Test this 3... Test this 4... Test this... (2 Replies)
Discussion started by: deneuve01
2 Replies

4. Shell Programming and Scripting

insert blank line between lines

Hello, I am trying to write a script that will count the number of characters for each line in a file and all the lines that have less than 80 characters and that are ending with a period, I want it to insert a blank line after them immediately. But, for whatever reason the condition if ]] is... (3 Replies)
Discussion started by: Pouchie1
3 Replies

5. Shell Programming and Scripting

Insert blank line if grep not found

Hi all, I've googling around forum regarding my prob, the nearest would same as thread tittled Insert blank line if grep not found, but she/he did not mention the solution, so I would like to request your help I've this task, to search in file2 based on pattern in file1 and output it to... (4 Replies)
Discussion started by: masterpiece
4 Replies

6. Shell Programming and Scripting

Insert blank line in a file

I have a file with data as below : Heading 1 ------------- Heading 1 data1 Heading 1 data2 Heading 1 data3 Heading 1 data4 Heading 2 ------------- Heading 2 data1 Heading 2 data2 Heading 2 data3 Heading 2 data4 Heading 3 ------------- Heading 3 data1 Heading 3 data2 Heading 3... (2 Replies)
Discussion started by: yoursdivu
2 Replies

7. Shell Programming and Scripting

compare three files and insert a blank line at each mismatch

i need to compare three files in unix a.txt b.txt c.txt 1 2 1 2 5 3 4 6 5 5 6 6 i need to insert a blank line in the file if i don't find a match and put the items at the same column if found a match The items in the files... (4 Replies)
Discussion started by: mad_man12
4 Replies

8. Shell Programming and Scripting

How to insert a character in line in Special condition?

Hi, I have a log file generated by a tool which has the following look : /tmp/releases/directory/datefilename1_release_date.zip /tmp/releases/directory/datefilename2_release_date.zip /tmp/releases/directory/datefilename3_release_date.zip... (8 Replies)
Discussion started by: bhaskar_m
8 Replies

9. Shell Programming and Scripting

insert text and add blank line

I need your help, I want to add a text every 2nd line and also a blank line after 3 line (In the output 2nd line is "changetype: modify" and every 4th line is blank line) Input file format dn: abc orclsourceobjectdn: abcd dn: bcd orclsourceobjectdn: bcda dn: cba orclsourceobjectdn:... (7 Replies)
Discussion started by: athidhi
7 Replies

10. Shell Programming and Scripting

Insert blank line if grep not found

Hello everyone... please help if you can -- I'm stumped. Making this work will save me hours of manual labor: I need to search file2 for pattern in file1. If pattern found append file2 line to file3. If pattern not found append a blank line to file3. file1 contents example: 123 456 789... (6 Replies)
Discussion started by: michieka
6 Replies
Login or Register to Ask a Question