SED or AWK "append line to the previous line"


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting SED or AWK "append line to the previous line"
# 1  
Old 05-14-2009
SED or AWK "append line to the previous line"

Hi,

How can I remove the line beak in the following case if the line begin with the special char “;”?

TEXT

Text;text
;text
Text;text;text


I want to convert the text to:

Text;text;text
Text;text;text



I have already tried to use “sed”, but the command only replace the first char one the line!


cat text | sed -e :a -e '$!N;s/^;/ /;ta' -e 'P;D'

Text;text
text
Text;text;text


Any suggestion ??

Thanks in advance!
# 2  
Old 05-14-2009
Code:
# awk 'ORS=/^;/?"\n":" "' file
Text;text ;text
Text;text;text

# 3  
Old 05-14-2009
Thanks ghostdog74 for your fast reply, but unfortunately if the file includes more line

Exp.

Text;tex
;text;
Text;text;text;
010020;789
test;test;test


then the command delete all the line breaks.

cat text | awk 'ORS=/^;/?"\n":" "'

Text;tex ;text;
Text;text;text; 010020;789 test;test;test


Output File should be:

Text;tex;text;
Text;text;text;
010020;789
test;test;test


Any suggestion in this case ??
# 4  
Old 05-14-2009
What would be a 100% indicator that it is the beginning of a line? A line beginning with a upper case T?
# 5  
Old 05-14-2009
The 100% indicator in my project file is [[:digit:]]!
All lines beginning with the upper case [0-9].
# 6  
Old 05-14-2009
I use the following command now: awk '/^;/ {sub(/^;/,""); getline t; print $0 t; next}; 1'
but unfortunately the next line will be appended to the pattern line and not the the pattern line to the preview.



awk '/^;/ {sub(/^;/,""); getline t; print $0 t; next}; 1' text

Text;tex
text;Text;text;text;
010020;789
test;test;test



output file should be:

Text;tex;text
Text;text;text;
010020;789
test;test;test




Is there a way I can append the line with the beginning “^;” to the preview line!


Many thanks!
# 7  
Old 05-14-2009
if you have Python, here's an alternative solution
Code:
#!/usr/bin/env python

data=open("file").read().split("\n")
for n,items in enumerate(data):
    if items.startswith(";"):
        data[n-1]= data[n-1]+items
        data.pop(n)
print '\n'.join(data)

output:
Code:
# more file
Text;tex
;text;
Text;text;text;
010020;789
abcdefg; sdf;
;text;
Text;text;text;
010020;789
test;test;test

# ./test.py
Text;tex;text;
Text;text;text;
010020;789
abcdefg; sdf;;text;
Text;text;text;
010020;789
test;test;test

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Failure: if grep "$Var" "$line" inside while read line loop

Hi everybody, I am new at Unix/Bourne shell scripting and with my youngest experiences, I will not become very old with it :o My code: #!/bin/sh set -e set -u export IFS= optl="Optl" LOCSTORCLI="/opt/lsi/storcli/storcli" ($LOCSTORCLI /c0 /vall show | grep RAID | cut -d " "... (5 Replies)
Discussion started by: Subsonic66
5 Replies

2. Shell Programming and Scripting

Append a line "while read line"

Hello everyone, I want to process a data file using bash, I would like add a new line RIGHT after the time when i know "another variable met a value" Like this: while read line do ... if ; then #Append a new line "===" to input.txt file after $line position #break fi done <... (11 Replies)
Discussion started by: fongthai
11 Replies

3. Shell Programming and Scripting

Move a line containg "char" above line containing "xchar"

Okay, so I have a rather large text file and will have to process many more and this will save me hours of work. I'm not very good at scripting, so bear with me please. Working on Linux RHEL I've been able to filter and edit and clean up using sed, but I have a problem with moving lines. ... (9 Replies)
Discussion started by: rex007can
9 Replies

4. Shell Programming and Scripting

Is it possible to use sed to handle the line contains BOTH "AA" and "BB"

if yes, can some expert give an example Lei (2 Replies)
Discussion started by: yanglei_fage
2 Replies

5. Shell Programming and Scripting

AWK for multiple line records RS="^" FS="#"

I have to pull multiple line records with ^ as the record separator(RS)... # should be my field separator (FS)... Sample record is: ^-60#ORA-00060: deadlock detected while waiting for resource ORA-00001: unique constraint (SARADM.TCKNUM_PK) violated#PROC:AVAILABLE_FOR_GETNXTTIC#02/27/2012... (7 Replies)
Discussion started by: Vidhyaprakash
7 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

append "awk command" to the end of each line

hi; this is my qqq.mos: l ./gcsw 86.0.0.1 'lt all;l+;lset SectorPort=860 Tilt 861;l-' l ./gcsw 86.0.0.2 'lt all;l+;lset SectorPort=862 Tilt 863;l-' l ./gcsw 86.0.0.3 'lt all;l+;lset SectorPort=864 Tilt 865;l-' ... i want to append;l nawk 'NR==14 && $NF!="Set."{print "l ./gcsw "r"... (4 Replies)
Discussion started by: gc_sw
4 Replies

8. Shell Programming and Scripting

sed append "\n" to end of every line in file

I know it sounds simple, but I want to e-mail the last 6 lines of a log file, which I have tailed into logresults.txt. I'm using echo -e "Subject:server results\nFrom:server log <user@domain.com>\n"`cat logresults.txt` | sendmail -t user@domain.com which works, but the body of the e-mail has... (4 Replies)
Discussion started by: unclecameron
4 Replies

9. Shell Programming and Scripting

each line as 20digit long append zero "0" in front

i have an ip file like 121 1213412 34345353 long file want to made each line as 20digit long append zero "0" in front as 121 become 00000000000000000121 (1 Reply)
Discussion started by: RahulJoshi
1 Replies

10. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question