unix commands

23
COMMAND DESCRIPTION System information arch show architecture of machine(1) uname -m show architecture of machine(2) uname -r show used kernel version date show system date cal 2007 show the timetable of 2007 date 041217002007.00 set date and time - MonthDayhoursMinutesYear. Seconds clock -w save date changes on BIOS Files and Directory cd /home enter to directory '/ home' cd .. go back one level cd ../.. go back two levels cd go to home directory cd ~user1 go to home directory cd - go to previous directory pwd show the path of work directory ls view files of directory ls -F view files of directory ls -l show details of files and directory ls -a show hidden files ls *[0-9]* show files and directory containing numbers mkdir dir1 create a directory called 'dir1'

Upload: karthik-kumar

Post on 21-Jul-2016

9 views

Category:

Documents


1 download

DESCRIPTION

Unix commands

TRANSCRIPT

Page 1: Unix Commands

COMMANDDESCRIPTION

System informationarch show architecture of machine(1)uname -m show architecture of machine(2)uname -r show used kernel versiondate show system datecal 2007 show the timetable of 2007

date 041217002007.00  set date and time - MonthDayhoursMinutesYear.Seconds

clock -w save date changes on BIOS

Files and Directory cd /home enter to directory '/ home'cd .. go back one levelcd ../.. go back two levelscd go to home directorycd ~user1 go to home directorycd - go to previous directorypwd show the path of work directoryls view files of directoryls -F view files of directoryls -l show details of files and directoryls -a show hidden files

ls *[0-9]* show files and directory containing numbers

mkdir dir1 create a directory called 'dir1'mkdir dir1 dir2 create two directories simultaneouslymkdir -p /tmp/dir1/dir2 create a directory treerm -f file1 delete file called 'file1'rmdir dir1 delete directory called 'dir1'

rm -rf dir1 remove a directory called 'dir1' and contents recursively

rm -rf dir1 dir2 remove two directories and their contents recursively

mv dir1 new_dir rename / move a file or directory cp file1 file2 copying a file

cp dir/* . copy all files of a directory within the current work directory

cp -a /tmp/dir1 . copy a directory within the current

Page 2: Unix Commands

work directorycp -a dir1 dir2 copy a directory

ln -s file1 lnk1  create a symbolic link to file or directory

ln file1 lnk1 create a physical link to file or directory

touch -t 0712250000 file1 modify timestamp of a file or directory - (YYMMDDhhmm)

file file1 outputs the mime type of the file as text

File search

find / -name file1 search file and directory into root filesystem from '/'

find / -user user1 search files and directories belonging to 'user1'

find /home/user1 -name \*.bin search files with '. bin' extension within directory '/ home/user1' 

find /usr/bin -type f -atime +100 search binary files are not used in the last 100 days

find /usr/bin -type f -mtime -10 search files created or changed within 10 days

find / -name \*.rpm -exec chmod 755 '{}' \; search files with '.rpm' extension and modify permits

Mounting a Filesystem

mount /dev/hda2 /mnt/hda2 mount disk called hda2 - verify existence of the directory '/ mnt/hda2'

umount /dev/hda2 unmount disk called hda2 - exit from mount point '/ mnt/hda2' first

Disk Space df -h show list of partitions mounted

ls -lSr |more show size of the files and directories ordered by size

du -sh dir1 estimate space used by directory 'dir1'

du -sk * | sort -rn  show size of the files and directories sorted by size

Users and Groupsgroupadd group_name create a new groupgroupdel group_name delete a groupgroupmod -n new_group_name old_group_name rename a group

useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1

create a new user belongs "admin" group

useradd user1 create a new user

Page 3: Unix Commands

userdel -r user1 delete a user ( '-r' eliminates home directory)

passwd change passwordpasswd user1 change a user password (only by root)Permits on Files (use "+" to set permissions and "-" to remove)ls -lh show permits

chmod ugo+rwx directory1set permissions reading (r), write (w) and (x) access to users owner (u) group (g) and others (o)

chmod go-rwx directory1remove permits reading (r), write (w) and (x) access to users group (g) and others (or

chown user1 file1 change owner of a file

chown -R user1 directory1change user owner of a directory and all the files and directories contained inside

chgrp group1 file1 change group of files

chown user1:group1 file1 change user and group ownership of a file

find / -perm -u+s view all files on the system with SUID configured

chmod u+s /bin/file1set SUID bit on a binary file - the user that running that file gets same privileges as owner

chmod u-s /bin/file1 disable SUID bit on a binary file

chmod g+s /home/public set SGID bit on a directory - similar to SUID but for directory

chmod g-s /home/public disable SGID bit on a directory

chmod o+t /home/publicset STIKY bit on a directory - allows files deletion only to legitimate owners

chmod o-t /home/public disable STIKY bit on a directorySpecial Attributes on files (use "+" to set permissions and "-" to remove) Archives and compressed files bunzip2 file1.bz2 decompress a file called 'file1.bz2'bzip2 file1 compress a file called 'file1'gunzip file1.gz decompress a file called 'file1.gz'gzip file1 compress a file called 'file1'gzip -9 file1 compress with maximum compressionrar a file1.rar test_file create an archive rar called 'file1.rar'

rar a file1.rar file1 file2 dir1 compress 'file1', 'file2' and 'dir1' simultaneously

rar x file1.rar decompress rar archive

Page 4: Unix Commands

unrar x file1.rar decompress rar archivetar -cvf archive.tar file1 create a uncompressed tarball

tar -cvf archive.tar file1 file2 dir1 create an archive containing 'file1', 'file2' and 'dir1'

tar -tf archive.tar show contents of an archivetar -xvf archive.tar extract a tarballtar -xvf archive.tar -C /tmp extract a tarball into / tmptar -cvfj archive.tar.bz2 dir1 create a tarball compressed into bzip2

tar -xvfj archive.tar.bz2 decompress a compressed tar archive in bzip2

tar -cvfz archive.tar.gz dir1 create a tarball compressed into gzip

tar -xvfz archive.tar.gz decompress a compressed tar archive in gzip

zip file1.zip file1 create an archive compressed in zip

zip -r file1.zip file1 file2 dir1 compress in zip several files and directories simultaneously

unzip file1.zip decompress a zip archive

View file content

cat file1 view the contents of a file starting from the first row

tac file1 view the contents of a file starting from the last line

more file1 view content of a file along

less file1similar to 'more' command but which allows backward movement in the file as well as forward movement

head -2 file1 view first two lines of a filetail -2 file1 view last two lines of a file

tail -f /var/log/messages view in real time what is added to a file

Text Manipulation cat file1 file2 ... | command <> file1_in.txt_or_file1_out.txt

general syntax for text manipulation using PIPE, STDIN and STDOUT

cat file1 | command( sed, grep, awk, grep, etc...) > result.txt

general syntax to manipulate a text of a file, and write result to a new file

cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt

general syntax to manipulate a text of a file and append result in existing file

grep Aug /var/log/messages look up words "Aug" on file '/var/log/messages'

grep ^Aug /var/log/messages look up words that begin with "Aug" on file '/var/log/messages'

grep [0-9] /var/log/messages select from file '/var/log/messages' all

Page 5: Unix Commands

lines that contain numbers

grep Aug -R /var/log/* search string "Aug" at directory '/var/log' and below

sed 's/stringa1/stringa2/g' example.txt replace "string1" with "string2" in example.txt

sed '/^$/d' example.txt remove all blank lines from example.txt

sed '/ *#/d; /^$/d' example.txt remove comments and blank lines from example.txt

echo 'esempio' | tr '[:lower:]' '[:upper:]' convert from lower case in upper case

sed -e '1d' result.txt eliminates the first line from file example.txt

sed -n '/stringa1/p' view only lines that contain the word "string1"

sed -e 's/ *$//' example.txt remove empty characters at the end of each row

sed -e 's/stringa1//g' example.txt remove only the word "string1" from text and leave intact all

sed -n '1,5p;5q' example.txt view from 1th to 5th rowsed -n '5p;5q' example.txt view row number 5sed -e 's/00*/0/g' example.txt replace more zeros with a single zerocat -n file1 number row of a file

cat example.txt | awk 'NR%2==1' remove all even lines from example.txt

echo a b c | awk '{print $1}' view the first column of a line

echo a b c | awk '{print $1,$3}' view the first and third column of a line

paste file1 file2 merging contents of two files for columns

paste  -d  '+' file1 file2merging contents of two files for columns with '+' delimiter on the center

sort file1 file2 sort contents of two files

sort file1 file2 | uniq sort contents of two files omitting lines repeated

sort file1 file2 | uniq -u sort contents of two files by viewing only unique line

sort file1 file2 | uniq -d sort contents of two files by viewing only duplicate line

comm -1 file1 file2 compare contents of two files by deleting only unique lines from 'file1'

comm -2 file1 file2 compare contents of two files by deleting only unique lines from 'file2'

comm -3 file1 file2 compare contents of two files by

Page 6: Unix Commands

deleting only the lines that appear on both files

Monitoring and debugging top display linux tasks using most cpups -eafw displays linux tasks

kill -9 ID_Processo force closure of the process and finish it

kill -1 ID_Processo force a process to reload configuration

who -a

Show who is logged on, and print: time of last system boot, dead processes, system login processes, active processes spawned by init, current runlevel, last system clock change

FILE SPACING: # double space a filesed G # double space a file which already has blank lines in it. Output file# should contain no more than one blank line between lines of text.sed '/^$/d;G' # triple space a filesed 'G;G' # undo double-spacing (assumes even-numbered lines are always blank)sed 'n;d' # insert a blank line above every line which matches "regex"sed '/regex/{x;p;x;}' # insert a blank line below every line which matches "regex"sed '/regex/G' # insert a blank line above and below every line which matches "regex"sed '/regex/{x;p;x;G;}' NUMBERING: # number each line of a file (simple left alignment). Using a tab (see# note on '\t' at end of file) instead of space will preserve margins.sed = filename | sed 'N;s/\n/\t/' 

Page 7: Unix Commands

# number each line of a file (number on left, right-aligned)sed = filename | sed 'N; s/^/     /; s/ *\(.\{6,\}\)\n/\1  /' # number each line of file, but only print numbers if line is not blanksed '/./=' filename | sed '/./N; s/\n/ /' # count lines (emulates "wc -l")sed -n '$=' TEXT CONVERSION AND SUBSTITUTION: # IN UNIX ENVIRONMENT: convert DOS newlines (CR/LF) to Unix formatsed 's/.$//'               # assumes that all lines end with CR/LFsed 's/^M$//'              # in bash/tcsh, press Ctrl-V then Ctrl-Msed 's/\x0D$//'            # gsed 3.02.80, but top script is easier # IN UNIX ENVIRONMENT: convert Unix newlines (LF) to DOS formatsed "s/$/`echo -e \\\r`/"            # command line under kshsed 's/$'"/`echo \\\r`/"             # command line under bashsed "s/$/`echo \\\r`/"               # command line under zshsed 's/$/\r/'                        # gsed 3.02.80 # IN DOS ENVIRONMENT: convert Unix newlines (LF) to DOS formatsed "s/$//"                          # method 1sed -n p                             # method 2 # IN DOS ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format# Can only be done with UnxUtils sed, version 4.0.7 or higher.# Cannot be done with other DOS versions of sed. Use "tr" instead.sed "s/\r//" infile >outfile         # UnxUtils sed v4.0.7 or highertr -d \r <infile >outfile            # GNU tr version 1.22 or higher # delete leading whitespace (spaces, tabs) from front of each line# aligns all text flush leftsed 's/^[ \t]*//'                    # see note on '\t' at end of file # delete trailing whitespace (spaces, tabs) from end of each linesed 's/[ \t]*$//'                    # see note on '\t' at end of file # delete BOTH leading and trailing whitespace from each linesed 's/^[ \t]*//;s/[ \t]*$//' # insert 5 blank spaces at beginning of each line (make page offset)sed 's/^/     /' # align all text flush right on a 79-column widthsed -e :a -e 's/^.\{1,78\}$/ &/;ta'  # set at 78 plus 1 space # center all text in the middle of 79-column width. In method 1,# spaces at the beginning of the line are significant, and trailing

Page 8: Unix Commands

# spaces are appended at the end of the line. In method 2, spaces at# the beginning of the line are discarded in centering the line, and# no trailing spaces appear at the end of lines.sed  -e :a -e 's/^.\{1,77\}$/ & /;ta'                     # method 1sed  -e :a -e 's/^.\{1,77\}$/ &/;ta' -e 's/\( *\)\1/\1/'  # method 2 # substitute (find and replace) "foo" with "bar" on each linesed 's/foo/bar/'             # replaces only 1st instance in a linesed 's/foo/bar/4'            # replaces only 4th instance in a linesed 's/foo/bar/g'            # replaces ALL instances in a linesed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # replace the next-to-last casesed 's/\(.*\)foo/\1bar/'            # replace only the last case # substitute "foo" with "bar" ONLY for lines which contain "baz"sed '/baz/s/foo/bar/g' # substitute "foo" with "bar" EXCEPT for lines which contain "baz"sed '/baz/!s/foo/bar/g' # change "scarlet" or "ruby" or "puce" to "red"sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'   # most sedsgsed 's/scarlet\|ruby\|puce/red/g'                # GNU sed only # reverse order of lines (emulates "tac")# bug/feature in HHsed v1.5 causes blank lines to be deletedsed '1!G;h;$!d'               # method 1sed -n '1!G;h;$p'             # method 2 # reverse each character on the line (emulates "rev")sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' # join pairs of lines side-by-side (like "paste")sed '$!N;s/\n/ /' # if a line ends with a backslash, append the next line to itsed -e :a -e '/\\$/N; s/\\\n//; ta' # if a line begins with an equal sign, append it to the previous line# and replace the "=" with a single spacesed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D' # add commas to numeric strings, changing "1234567" to "1,234,567"gsed ':a;s/\B[0-9]\{3\}\>/,&/;ta'                     # GNU sedsed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'  # other seds # add commas to numbers with decimal points and minus signs (GNU sed)gsed ':a;s/\(^\|[^0-9.]\)\([0-9]\+\)\([0-9]\{3\}\)/\1\2,\3/g;ta' # add a blank line every 5 lines (after lines 5, 10, 15, 20, etc.)gsed '0~5G'                  # GNU sed only

Page 9: Unix Commands

sed 'n;n;n;n;G;'             # other seds SELECTIVE PRINTING OF CERTAIN LINES: # print first 10 lines of file (emulates behavior of "head")sed 10q # print first line of file (emulates "head -1")sed q # print the last 10 lines of a file (emulates "tail")sed -e :a -e '$q;N;11,$D;ba' # print the last 2 lines of a file (emulates "tail -2")sed '$!N;$!D' # print the last line of a file (emulates "tail -1")sed '$!d'                    # method 1sed -n '$p'                  # method 2 # print only lines which match regular expression (emulates "grep")sed -n '/regexp/p'           # method 1sed '/regexp/!d'             # method 2 # print only lines which do NOT match regexp (emulates "grep -v")sed -n '/regexp/!p'          # method 1, corresponds to abovesed '/regexp/d'              # method 2, simpler syntax # print the line immediately before a regexp, but not the line# containing the regexpsed -n '/regexp/{g;1!p;};h' # print the line immediately after a regexp, but not the line# containing the regexpsed -n '/regexp/{n;p;}' # print 1 line of context before and after regexp, with line number# indicating where the regexp occurred (similar to "grep -A1 -B1")sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h # grep for AAA and BBB and CCC (in any order)sed '/AAA/!d; /BBB/!d; /CCC/!d' # grep for AAA and BBB and CCC (in that order)sed '/AAA.*BBB.*CCC/!d' # grep for AAA or BBB or CCC (emulates "egrep")sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d    # most sedsgsed '/AAA\|BBB\|CCC/!d'                        # GNU sed only 

Page 10: Unix Commands

# print paragraph if it contains AAA (blank lines separate paragraphs)# HHsed v1.5 must insert a 'G;' after 'x;' in the next 3 scripts belowsed -e '/./{H;$!d;}' -e 'x;/AAA/!d;' # print paragraph if it contains AAA and BBB and CCC (in any order)sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d' # print paragraph if it contains AAA or BBB or CCCsed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e dgsed '/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d'         # GNU sed only # print only lines of 65 characters or longersed -n '/^.\{65\}/p' # print only lines of less than 65 characterssed -n '/^.\{65\}/!p'        # method 1, corresponds to abovesed '/^.\{65\}/d'            # method 2, simpler syntax # print section of file from regular expression to end of filesed -n '/regexp/,$p' # print section of file based on line numbers (lines 8-12, inclusive)sed -n '8,12p'               # method 1sed '8,12!d'                 # method 2 # print line number 52sed -n '52p'                 # method 1sed '52!d'                   # method 2sed '52q;d'                  # method 3, efficient on large files # beginning at line 3, print every 7th linegsed -n '3~7p'               # GNU sed onlysed -n '3,${p;n;n;n;n;n;n;}' # other seds # print section of file between two regular expressions (inclusive)sed -n '/Iowa/,/Montana/p'             # case sensitive SELECTIVE DELETION OF CERTAIN LINES: # print all of file EXCEPT section between 2 regular expressionssed '/Iowa/,/Montana/d' # delete duplicate, consecutive lines from a file (emulates "uniq").# First line in a set of duplicate lines is kept, rest are deleted.sed '$!N; /^\(.*\)\n\1$/!P; D' # delete duplicate, nonconsecutive lines from a file. Beware not to# overflow the buffer size of the hold space, or else use GNU sed.sed -n 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P' 

Page 11: Unix Commands

# delete all lines except duplicate lines (emulates "uniq -d").sed '$!N; s/^\(.*\)\n\1$/\1/; t; D' # delete the first 10 lines of a filesed '1,10d' # delete the last line of a filesed '$d' # delete the last 2 lines of a filesed 'N;$!P;$!D;$d' # delete the last 10 lines of a filesed -e :a -e '$d;N;2,10ba' -e 'P;D'   # method 1sed -n -e :a -e '1,10!{P;N;D;};N;ba'  # method 2 # delete every 8th linegsed '0~8d'                           # GNU sed onlysed 'n;n;n;n;n;n;n;d;'                # other seds # delete ALL blank lines from a file (same as "grep '.' ")sed '/^$/d'                           # method 1sed '/./!d'                           # method 2 # delete all CONSECUTIVE blank lines from file except the first; also# deletes all blank lines from top and end of file (emulates "cat -s")sed '/./,/^$/!d'          # method 1, allows 0 blanks at top, 1 at EOFsed '/^$/N;/\n$/D'        # method 2, allows 1 blank at top, 0 at EOF # delete all CONSECUTIVE blank lines from file except the first 2:sed '/^$/N;/\n$/N;//D' # delete all leading blank lines at top of filesed '/./,$!d' # delete all trailing blank lines at end of filesed -e :a -e '/^\n*$/{$d;N;ba' -e '}'  # works on all sedssed -e :a -e '/^\n*$/N;/\n$/ba'        # ditto, except for gsed 3.02* # delete the last line of each paragraphsed -n '/^$/{p;h;};/./{x;/./p;}' SPECIAL APPLICATIONS: # remove nroff overstrikes (char, backspace) from man pages. The 'echo'# command may need an -e switch if you use Unix System V or bash shell.sed "s/.`echo \\\b`//g"    # double quotes required for Unix environmentsed 's/.^H//g'             # in bash/tcsh, press Ctrl-V and then Ctrl-Hsed 's/.\x08//g'           # hex expression for sed v1.5 

Page 12: Unix Commands

# get Usenet/e-mail message headersed '/^$/q'                # deletes everything after first blank line # get Usenet/e-mail message bodysed '1,/^$/d'              # deletes everything up to first blank line # get Subject header, but remove initial "Subject: " portionsed '/^Subject: */!d; s///;q' # get return address headersed '/^Reply-To:/q; /^From:/h; /./d;g;q' # parse out the address proper. Pulls out the e-mail address by itself# from the 1-line return address header (see preceding script)sed 's/ *(.*)//; s/>.*//; s/.*[:<] *//' # add a leading angle bracket and space to each line (quote a message)sed 's/^/> /' # delete leading angle bracket & space from each line (unquote a message)sed 's/^> //' # remove most HTML tags (accommodates multiple-line tags)sed -e :a -e 's/<[^>]*>//g;/</N;//ba' # extract multi-part uuencoded binaries, removing extraneous header# info, so that only the uuencoded portion remains. Files passed to# sed must be passed in the proper order. Version 1 can be entered# from the command line; version 2 can be made into an executable# Unix shell script. (Modified from a script by Rahul Dhesi.)sed '/^end/,/^begin/d' file1 file2 ... fileX | uudecode   # vers. 1sed '/^end/,/^begin/d' "$@" | uudecode                    # vers. 2 # zip up each .TXT file individually, deleting the source file and# setting the name of each .ZIP file to the basename of the .TXT file# (under DOS: the "dir /b" switch returns bare filenames in all caps).echo @echo off >zipup.batdir /b *.txt | sed "s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/" >>zipup.bat TYPICAL USE: Sed takes one or more editing commands and applies all ofthem, in sequence, to each line of input. After all the commands havebeen applied to the first input line, that line is output and a secondinput line is taken for processing, and the cycle repeats. Thepreceding examples assume that input comes from the standard inputdevice (i.e, the console, normally this will be piped input). One ormore filenames can be appended to the command line if the input doesnot come from stdin. Output is sent to stdout (the screen). Thus: cat filename | sed '10q'        # uses piped inputsed '10q' filename              # same effect, avoids a useless "cat"

Page 13: Unix Commands

sed '10q' filename > newfile    # redirects output to disk For additional syntax instructions, including the way to apply editingcommands from a disk file instead of the command line, consult "sed &awk, 2nd Edition," by Dale Dougherty and Arnold Robbins (O'Reilly,1997; http://www.ora.com), "UNIX Text Processing," by Dale Doughertyand Tim O'Reilly (Hayden Books, 1987) or the tutorials by Mike Arstdistributed in U-SEDIT2.ZIP (many sites). To fully exploit the powerof sed, one must understand "regular expressions." For this, see"Mastering Regular Expressions" by Jeffrey Friedl (O'Reilly, 1997).The manual ("man") pages on Unix systems may be helpful (try "mansed", "man regexp", or the subsection on regular expressions in "maned"), but man pages are notoriously difficult. They are not written toteach sed use or regexps to first-time users, but as a reference textfor those already acquainted with these tools. QUOTING SYNTAX: The preceding examples use single quotes ('...')instead of double quotes ("...") to enclose editing commands, sincesed is typically used on a Unix platform. Single quotes prevent theUnix shell from intrepreting the dollar sign ($) and backquotes(`...`), which are expanded by the shell if they are enclosed indouble quotes. Users of the "csh" shell and derivatives will also needto quote the exclamation mark (!) with the backslash (i.e., \!) toproperly run the examples listed above, even within single quotes.Versions of sed written for DOS invariably require double quotes("...") instead of single quotes to enclose editing commands. USE OF '\t' IN SED SCRIPTS: For clarity in documentation, we have usedthe expression '\t' to indicate a tab character (0x09) in the scripts.However, most versions of sed do not recognize the '\t' abbreviation,so when typing these scripts from the command line, you should pressthe TAB key instead. '\t' is supported as a regular expressionmetacharacter in awk, perl, and HHsed, sedmod, and GNU sed v3.02.80. VERSIONS OF SED: Versions of sed do differ, and some slight syntaxvariation is to be expected. In particular, most do not support theuse of labels (:name) or branch instructions (b,t) within editingcommands, except at the end of those commands. We have used the syntaxwhich will be portable to most users of sed, even though the popularGNU versions of sed allow a more succinct syntax. When the reader seesa fairly long command such as this:    sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d it is heartening to know that GNU sed will let you reduce it to:    sed '/AAA/b;/BBB/b;/CCC/b;d'      # or even   sed '/AAA\|BBB\|CCC/b;d' In addition, remember that while many versions of sed accept a command

Page 14: Unix Commands

like "/one/ s/RE1/RE2/", some do NOT allow "/one/! s/RE1/RE2/", whichcontains space before the 's'. Omit the space when typing the command. OPTIMIZING FOR SPEED: If execution speed needs to be increased (due tolarge input files or slow processors or hard disks), substitution willbe executed more quickly if the "find" expression is specified beforegiving the "s/.../.../" instruction. Thus:    sed 's/foo/bar/g' filename         # standard replace command   sed '/foo/ s/foo/bar/g' filename   # executes more quickly   sed '/foo/ s//bar/g' filename      # shorthand sed syntax On line selection or deletion in which you only need to output linesfrom the first part of the file, a "quit" command (q) in the scriptwill drastically reduce processing time for large files. Thus:    sed -n '45,50p' filename           # print line nos. 45-50 of a file   sed -n '51q;45,50p' filename       # same, but executes much faster