Visit Our UNIX and Linux User Community


Reformatting single column text file starting new line when finding particular string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Reformatting single column text file starting new line when finding particular string
# 1  
Old 10-21-2011
Reformatting single column text file starting new line when finding particular string

Hi, I have a single colum file and I need to reformat the file so that it creates a new line every time it come to an IP address and the following lines are corresponding rows until it comes to the next IP address.

I want to turn this
Code:
172.xx.xx.xx
 gwpusprdrp02_pv
 seinwnprd03
10.xx.xx.xx
 imauditorsql
 seinwnprd06
172.xx.xx.xx
 invtsql01
 seinwnprd02
172.xx.xx.xx
 itcnetlog1
 seinwnprd02
172.xx.xx.xx
 itcsql04
 seinwnprd02
10.xx.xx.xx
 oaksdag01.corp.seic.com
 seinwnprd06, nsrserverhost

into this
Code:
172.xx.xx.xx gwpusprdrp02_pv seinwnprd03
10.xx.xx.xx imauditorsql seinwnprd06
172.xx.xx.xx invtsql01 seinwnprd02
172.xx.xx.xx itcnetlog1 seinwnprd02
172.xx.xx.xx itcsql04 seinwnprd02
10.xx.xx.xx oaksdag01.corp.seic.com seinwnprd06, nsrserverhost

Moderator's Comments:
Mod Comment Video tutorial on how to use code tags in The UNIX and Linux Forums.

Last edited by vbe; 10-21-2011 at 12:30 PM..
# 2  
Old 10-21-2011
Code:
nawk 'ORS=(FNR%3)?FS:RS' myFile

This User Gave Thanks to vgersh99 For This Post:
# 3  
Old 10-21-2011
Thanks for the response but the thing is that 3rd line does not always start with the IP address. I am looking for an awk statement that search for a string that starts with 1 so '^1' and then turns the lines that follow into corresponding rows for the IP address until it comes to the next IP?
# 4  
Old 10-21-2011
Code:
nawk '{printf("%c%s", ((/^[0-9]+/&&FNR!=1)?ORS:""), $0)}END{print ""}' myFile

# 5  
Old 10-21-2011
Thanks again but that code is only printing the IP addresses.
# 6  
Old 10-21-2011
given myFile:
Code:
172.xx.xx.xx
 gwpusprdrp02_pv
 seinwnprd03
10.xx.xx.xx
 imauditorsql
 seinwnprd06
172.xx.xx.xx
 invtsql01
 seinwnprd02
172.xx.xx.xx
 itcnetlog1
 seinwnprd02
172.xx.xx.xx
 itcsql04
 seinwnprd02
10.xx.xx.xx
 oaksdag01.corp.seic.com
 seinwnprd06, nsrserverhost

running nawk '{printf("%c%s", ((/^[0-9]+/&&FNR!=1)?ORS:""), $0)}END{print ""}' myFile produces:
Code:
172.xx.xx.xx gwpusprdrp02_pv seinwnprd03
10.xx.xx.xx imauditorsql seinwnprd06
172.xx.xx.xx invtsql01 seinwnprd02
172.xx.xx.xx itcnetlog1 seinwnprd02
172.xx.xx.xx itcsql04 seinwnprd02
10.xx.xx.xx oaksdag01.corp.seic.com seinwnprd06, nsrserverhost

Check your myFile input file. Make sure it doesn't contain any ^M-s. Post the output of:
Code:
cat -vet myFile

# 7  
Old 10-21-2011
It works perfectly if I use /usr/xpg4/bin/awk instead of /usr/bin/nawk. Thanks so much!!

Previous Thread | Next Thread
Test Your Knowledge in Computers #160
Difficulty: Easy
The Internet Autonomous Network Authority (IANA) is responsible for maintaining the official assignments of Internet port numbers.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Append a line to single column text file

I would like to add a line to the end of a single column text file. How do I go about doing that? Input: BEGIN 1 2 3 Output: BEGIN 1 2 3 END Thanks! (1 Reply)
Discussion started by: evelibertine
1 Replies

2. Shell Programming and Scripting

search a string in a particular column of file and return the line number of the line

Hi All, Can you please guide me to search a string in a particular column of file and return the line number of the line where it was found using awk. As an example : abc.txt 7000,john,2,1,0,1,6 7001,elen,2,2,0,1,7 7002,sami,2,3,0,1,6 7003,mike,1,4,0,2,1 8001,nike,1,5,0,1,8... (3 Replies)
Discussion started by: arunshankar.c
3 Replies

3. Shell Programming and Scripting

Multiple lines in a single column to be merged as a single line for a record

Hi, I have a requirement with, No~Dt~Notes 1~2011/08/1~"aaa bbb ccc ddd eee fff ggg hhh" Single column alone got splitted into multiple lines. I require the output as No~Dt~Notes 1~2011/08/1~"aaa<>bbb<>ccc<>ddd<>eee<>fff<>ggg<>hhh" mean to say those new lines to be... (1 Reply)
Discussion started by: Bhuvaneswari
1 Replies

4. UNIX for Dummies Questions & Answers

Sort text file starting at column X

Hello everyone! As the heading reads, I would like to sort the lines of a text file, starting at a specific column (i.e. skip the first X characters of each line). What I’m actually trying to sort is the md5 sums file of a directory. Every time I copy a new file to that directory, I perform... (3 Replies)
Discussion started by: iznogoud
3 Replies

5. Shell Programming and Scripting

Help for reformatting text file and creating new format

Hi all, I have an input file like 1,date,company,, 1,date,comapny,, 2,000,,,567,ACT,00,,,,KKG,M1,D45,,67J,+4500000000 2,000,,,567,ACT,00,,,,KKG,M6,D49,,56J,+6000 2,000,,,567,ACT,00,,7,,KKG,M3,D58,,68h,-70000 2,000,,,567,ACT,00,,,,KKG,M9,D95,,34m,0.00 3,total what i require is 1.I... (2 Replies)
Discussion started by: selvankj
2 Replies

6. Shell Programming and Scripting

replace (sed?) a single line/string in file with multiple lines (string) from another file??

Can someone tell me how I can do this? e.g: Say file1.txt contains: today is monday the 22 of NOVEMBER 2010 and file2.txt contains: the 11th month of How do i replace the word NOVEMBER with (5 Replies)
Discussion started by: tuathan
5 Replies

7. Shell Programming and Scripting

Finding the second last column value from a text file

Can any one tell me how to get the second last column value from the text file, which has different record size for each record. I know how to get the last column using awk and print statements, but I am unable to get the second last column value from the file. (4 Replies)
Discussion started by: naveen_sangam
4 Replies

8. Shell Programming and Scripting

Finding the last column value from a text file

Hi, I need to find out the last column value from a text file which is delimited by a tab. The issue here is the last column# for each record can be different i.,e, 1st record can have the last column as 15 and the second record can have the last column as "17". I have to search a string... (3 Replies)
Discussion started by: naveen_sangam
3 Replies

9. Shell Programming and Scripting

Finding a string in a text file and posting part of the line

What would be the most succinct way of doing this (preferably in 1 line, maybe 2): searching the first 10 characters of every line in a text file for a specific string, and if it was found, print out characters 11-20 of the line on which the string was found. In this case, it's known that there... (13 Replies)
Discussion started by: busdude
13 Replies

10. Shell Programming and Scripting

Finding a certain string on each line in a file

Hi, I need a script to get every line from a file where there are less then 17 ; on a line. Thank's (5 Replies)
Discussion started by: VODAFUN
5 Replies

Featured Tech Videos