Visit Our UNIX and Linux User Community


Another 'VI' question


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Another 'VI' question
# 1  
Old 01-02-2002
Power Another 'VI' question

I want to know how I can strip and add blanklines from/to a text file with VI.

I have two scenarios that I am currently doing manually - and it's painful.

1) I need to strip any lines that have no characters on them at all..... (:set list shows me $)

and

2) I need to enter a blank line on every second line of a text file


I've tried the ole
:1,$ s/`\n`//g

and many other combinations - but without joy.... and I'm foreign to sed/awk. (although if theres a way I'd be happy to hear it).

Cheers
# 2  
Old 01-03-2002
Code:
1.)      Strip blank lines with the following command:
         grep "[^$]" in_file > out_file

2.)      :1,$s/$/^M
         This command is like this:
                   a)  Type 1,$s/$/ as in the normal way you would.
                   b)  Hold [CTRL+V] and then [CTRL+M]
                   c)  Ofcourse, hit [ENTER] :D

Hope this has helped you.

Rgds
SHAIK

Last edited by shaik786; 01-03-2002 at 07:00 AM..
shaik786
# 3  
Old 01-03-2002
Wow, of all of the different ways I would have though to do #1, I would not have thought of `grep "[^$]"`... Here's some others that work similarly:
grep -v "^$"
sed /^$/d
egrep "^.+$"
....

And list could go on...

Boy, I LOVE Unix!
# 4  
Old 01-03-2002
And here is an awk solution that will strip blank lines, not only null lines but also empty lines containing only white space (spaces and/or tabs). It is selecting all lines where the number of fields (NF) on a line are greater than zero:

awk 'NF>0' in_file > out_file

And one awk solution to strip just the completely null lines:

awk 'length==0' in_file > out_file

And an awk solution to add a blank line after each line:

awk '{print $0;print ""}' in_file > out_file

Or to insert blank lines only where needed, considering that there might already be some blank lines:

awk '{if (NF>0&&prev>0) print "";print $0;prev=NF}' inf > outf

Last edited by Jimbo; 01-04-2002 at 04:23 PM..
Jimbo
# 5  
Old 01-03-2002
MySQL Brilliant..

Thanks heaps for ALL those suggestions... I didn't think there was a way to do it - and I was right - there's about a million!
# 6  
Old 01-03-2002
simple Elvis (also Vi?) solution

You can also use this command in Elvis, it should work in Vi too probably Smilie

:g/^$/d

This deletes all blank lines

/
JP Smilie
# 7  
Old 01-03-2002
Yep - tis good for VI as well.
 

Previous Thread | Next Thread
Test Your Knowledge in Computers #457
Difficulty: Easy
NTP was created to synchronize all participating computers to within a few milliseconds of Coordinated Universal Time (UTC).
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

What are the differences between 'bash' and 'sh'

Hopefully this doesn't come off as too much of a "newbie" question or a flamebait. But I have recently begun working with a Sun Solaris box after having spent the past five years working with RedHat. From what i can tell, thing look fairly similar and the 'man' command is some help. But I've... (7 Replies)
Discussion started by: deckard
7 Replies

2. UNIX for Advanced & Expert Users

How to remove a file with a leading dash '-' in it's name?

Somehow someone created a file named '-ov' in the root directory. Given the name, the how was probably the result of some cpio command they bozo'ed. I've tried a number of different ways to get rid of it using * and ? wildcards, '\' escape patterns etc.. They all fail with " illegal option --... (3 Replies)
Discussion started by: GSalisbury
3 Replies

3. Email Antispam Techniques and Email Filtering

Procmail recipe: blocking 'unsubscribe and opt-out' messages....

Here is a crude procmail recipe that I quickly created (NOT a procmail recipe expert, btw) that has been catching lots of spam (current second after the charset_spam recipe posted earlier): :0B * .*If.you.do.not.wish.to.receive...* more_spam :0B * You.requested.to.receive.this.mailing... (0 Replies)
Discussion started by: Neo
0 Replies

4. IP Networking

BELKIN 'F5D5020' 16bit PCMCIA - FreeBSD HOWTO

Hey all, I've bought a few bits from Belkin who seem quite happy to support FreeBSD! Last time I bought a UPS from them and it's still going well :D I saw this on their website that the 16bit PCMCIA card was supported under FreeBSD: http://www.belkin.com/network/F5D5020.html I went to my... (0 Replies)
Discussion started by: WIntellect
0 Replies

5. UNIX for Dummies Questions & Answers

quoting echo 'it's friday'

echo 'it's friday' why appear the > (3 Replies)
Discussion started by: yls177
3 Replies

6. UNIX for Dummies Questions & Answers

Further question on 'ifconfig' output

I asked a similar question earlier and got a very good answer but a new doubt came up. This is a few lines of a '/sbin/ifconfig' command on my PC: RX packets:3781025 errors:0 dropped:0 overruns:0 frame:0 TX packets:1941909 errors:0 dropped:0 overruns:0 carrier:0 Does the RX and TX packets... (1 Reply)
Discussion started by: mint1981
1 Replies

7. UNIX for Advanced & Expert Users

Terminal 'Local Echo' lost on Modem Dial-out

Can anybody help me? I am developing a utility for automating message paging to a BT alphanumeric pager. I am using a USR 56K Fax-modem connected to /dev/cuab on a Sun Ultra-10. I am using the UNIX 'tip' utility to connect to the modem and I have configured the modem as follows: Baud Rate:... (2 Replies)
Discussion started by: mybeat
2 Replies

8. Shell Programming and Scripting

Clearify what it means under 'WHAT' when hit the 'w'-command

I wonder how I shall read the result below, especially 'what' shown below. The result was shown when I entered 'w'. E.g what is TOP? What is gosh ( what does selmgr mean?)? login@ idle JCPU PCPU what 6:15am 7:04 39 39 TOP 6:34am 6:45 45 45 TOP 6:41am ... (1 Reply)
Discussion started by: Aelgen
1 Replies

9. UNIX for Dummies Questions & Answers

'find' command question

my solaris text talks about the 'find' command... it further goes to talk about an "action" used with the find command. I am completely confused as to what the {} do with the find comand. the explanation is this: "A set of braces, {}, delimits where the file name is passed to the command from... (2 Replies)
Discussion started by: xyyz
2 Replies

10. Programming

i can't use 'make' in my computer?

I need to compile a file,but 'make' does not work.please tell me how to use it or need which tools? (3 Replies)
Discussion started by: dsun5
3 Replies

Featured Tech Videos