removing newlines without changing RS in BEGIN


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers removing newlines without changing RS in BEGIN
# 1  
Old 09-26-2012
removing newlines without changing RS in BEGIN

Using awk, is there a way to remove newlines in strings that don't contain 1_ at the beginning, but without setting RS="1_" in the BEGIN section and without using a END section as well?

input:
1_this is line 1
aaaaaaaa
bbbb
1_this is line 2
cccc
1_this is line 3
dddddddddddddd
eeeeeeeeeee
ffffffff

to get this output:
1_this is line 1|aaaaaaaabbbb
1_this is line 2|cccc
1_this is line 3|ddddddddddddddeeeeeeeeeeeffffffff


I think we cannot use RS in a sub function.

Code:
gawk '{

     if ($0 ~ /^"1_"/){
          sub (/$/,"|")
     }
     else{
          sub (/RS/,"")
     }
}1'

---------- Post updated at 08:34 PM ---------- Previous update was at 07:07 PM ----------

It works with that except that a "\n" is missing in the last line:

Code:
gawk 'BEGIN{FS="|"}

{
    if ($0 ~ /^1_/ && NR>1){
        print ""
    }
    printf ("%s", /^1_/ ? $0 FS : $0)
}1'


Last edited by lucasvs; 09-26-2012 at 11:19 PM..
# 2  
Old 09-26-2012
Try this:
Code:
gawk '/^1_this/ {
        if(NR != 1) printf("\n")
        printf("%s|", $0)
        next
}
        {printf("%s", $0)}
END {if(NR > 0) printf("\n")}' input

# 3  
Old 09-26-2012
And without using an END section, is it doable...Smilie

Last edited by lucasvs; 09-26-2012 at 11:17 PM..
# 4  
Old 09-26-2012
Try this:
Code:
awk '/^1_/{if (x)print x;x="";}{x=(!x)?$0"|":x$0;}END{print x;}'

This User Gave Thanks to spacebar For This Post:
# 5  
Old 09-26-2012
Thanks Don Cragun and spacebar !

But is it possible without using an END section?
# 6  
Old 09-26-2012
No. With my script you need the END clause to print the trailing <newline>; with spacebar's script you need the END clause to print the entire last line.
Until you hit EOF, you don't know that there won't be another input line that needs to be joined to what you have already accumulated.

Last edited by Don Cragun; 09-26-2012 at 11:38 PM.. Reason: fix typo
This User Gave Thanks to Don Cragun For This Post:
# 7  
Old 09-26-2012
Quote:
Originally Posted by lucasvs
But is it possible without using an END section?
What is the reason for this constraint?

Regards,
Alister
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

UNIX file with Newlines

Hi Friends, I have a data file with new lines. How to remove the newlines and should be showed in one line. I tried using the command tr -d '\n' filename sed 's/\n//g' file name Ex: 1 abc hyd is actual record but in our scenario showing it as 1 abc hydthis record should be like... (5 Replies)
Discussion started by: victory
5 Replies

2. Shell Programming and Scripting

File formatting with newlines

Hi All - I am in need of some help in formating the below file Requirement - 1) replace newlines with space 2) replace '#~# ' with newline ----------------------- sample inputfile a I|abc|abc|aaa#~# I|sddddd|tya|dfg sfd ssss#~# I|tya1|tya2|dfg|sfd|aaa#~#... (5 Replies)
Discussion started by: J1nx007
5 Replies

3. UNIX for Dummies Questions & Answers

Remove newlines

Hi buddy's my file are like this: s.no,name,band,sal 1,"suneel",,10 2,"bargav sand",,20 30," ebdug gil",,4 but i want s.no,name,band,sal 1,"suneel",,10 2,"bargav sand",,20 30,"ebdug gil",,4 any command or Shell script for this. please help me it's urgent to implement (33 Replies)
Discussion started by: Suneelbabu.etl
33 Replies

4. Shell Programming and Scripting

Replace commas with newlines

Good afternoon, I am trying to read user input. Here is what I have so far: echo "Type the Container ID for every container that you want subnets exported" echo "for (with comma between each one, for example... 1,45,98)" echo -n "if you want every one listed, then just type ALL in caps... (2 Replies)
Discussion started by: brianjb
2 Replies

5. Shell Programming and Scripting

removing newlines after a certain word.

Hello! This is my first post here. I have a file with text like: A</title> B C</title> D I need to format it to: AB CD I am trying to use sed: sed 's/<//title>\n/ /g' file > newfile to delete </title> and the newline character, but the file is unchanged because there are... (3 Replies)
Discussion started by: DaytonCPS
3 Replies

6. Shell Programming and Scripting

Delete newlines after every one space

Hi All, I have a file which looks like this: abc 3456 computer 3214 printer 0.9823 computer 3214 Can anyone please let me know how I can format my text like this? abc 3456 computer 3214 printer 0.9823 computer 3214 I know how to space to newlines using tr but don't know how to do... (4 Replies)
Discussion started by: shoaibjameel123
4 Replies

7. Shell Programming and Scripting

Ignoring newlines in my search

I have a file that has lines that are deliminated with '^A', but some of the lines go for a few lines and I need those lines to be appended into one line. All of the lines start with 'low debug' and end with ' " 0 '. How can I read each line from start to finish without some of the data... (7 Replies)
Discussion started by: ndedhia1
7 Replies

8. Shell Programming and Scripting

Remove improperly placed newlines

Hello, there. I have a file that's a horrible, horrible mess. (Basically, it's an export from a firewall config.) The people who generated the file didn't think that putting a newline in the middle of a hostname would ever be a problem. It is. Here's an example of the stuff in the file: ... (2 Replies)
Discussion started by: mikesimone
2 Replies

9. Shell Programming and Scripting

Transpose with two newlines as delimiter

Hi Guys, I have data in a file as follows: a 1 2 3 b 4 5 6 a 6 7 8 a 4 7 9 b 6 8 5 c 0 8 7 So the number of rows which have data is variable (2 for the first group, one for the second group and three for the third group), but the delimiters between the... (10 Replies)
Discussion started by: npatwardhan
10 Replies

10. Shell Programming and Scripting

Removing inserted newlines from a fileld of fixed width file.

Hi champs! I have a fixed width file in which the records appear like this 11111 <fixed spaces such as 6> description for 11111 <fixed spaces such as 6> some more field to the record of 11111 22222 <fixed spaces such as 6> description for 22222 <fixed spaces such as 6> some more field to the... (8 Replies)
Discussion started by: enigma_1
8 Replies
Login or Register to Ask a Question