home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


UNIX Power Tools

UNIX Power ToolsSearch this book
Previous: 25.10 Squash Extra Blank Lines Chapter 25
Showing What's in a File
Next: 25.12 Double Space, Triple Space ...
 

25.11 crush: A cat that Skips all Blank Lines

Sometimes I have a series of files, or just one file, with lots of blank lines. Some systems have a -s option to cat that causes it to compress adjacent blank lines into one. If that option isn't available, you can use crush . The crush script skips all lines that are empty or have only blanks and/or TABs. Here it is:


#!/bin/sed -f
/^[    ]*$/d

The brackets, [ ] , have a TAB and a space in them. That file doesn't even use a shell, so it's efficient; the kernel starts sed directly (45.3 ) and gives it the script itself as the input file expected with the -f option. If your UNIX can't execute files directly with #! , type in this version instead:

exec sed '/^[    ]*$/d' ${1+"$@"}

It starts a shell, then exec replaces the shell with sed (45.7 ) . The ${1+"$@"} works around a problem with argument handling (46.7 ) in some Bourne shells.

- JP


Previous: 25.10 Squash Extra Blank Lines UNIX Power Tools Next: 25.12 Double Space, Triple Space ...
25.10 Squash Extra Blank Lines Book Index 25.12 Double Space, Triple Space ...

The UNIX CD Bookshelf NavigationThe UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System