09-27-2006
You might want to use the '-r' option to tell sed to use extended regular expressions. Basic sed regexes are quite limited.
Second, regular expressions work differently in sed than they do in a shell. * doesn't mean anything by itself, it's a modifier for something else. First you tell it what expression you want to match, then optionally, how many of them you want to match. An expression can be a single letter, a set of letters, or something in brackets.
- A by itself just matches the letter A, like you'd expect.
- [ABC] by itself just matches the letter A, B, or C.
- A* tells it to match 0 or more A characters.
- [ABC]* tells it to match 0 or more characters among A, B, C.
- [A-Z]* tells it to match 0 or more characters among A, B, C, ..., Z.
- [^A]* tells it to match 0 or more characters that aren't A.
- (ABC)* tells it to match 0 or more repititions of "ABC".
* is not the only modifier:
- A+ tells it to match 1 or more A characters.
- A? tells it to match 0 or 1 A characters.
- A{4} tells it to match precisely 4 A characters.
This User Gave Thanks to Corona688 For This Post:
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
I'm trying to delete lines from a large text file using VI.
Every line that I am wanting to delete start with 'S' - all others do not. (A list of users)
I've tried using * but doesn't seem to like it...any ideas...
Doesn't have to be VI - but I'm better with VI than sed/awk. (8 Replies)
Discussion started by: peter.herlihy
8 Replies
2. UNIX for Dummies Questions & Answers
when writing a shell script (bourne) and using a unix command like 'ls' is there anything special you need to do to use a wildcard (like *)? (3 Replies)
Discussion started by: benu302000
3 Replies
3. UNIX for Dummies Questions & Answers
ok, I'm trying to write a script file that lists files with specific elements in the name into a txt file, it looks like this
ls s*.dat > file_names.txt
can't figure out whats wrong with that line, any ideas?
thanks in advance (10 Replies)
Discussion started by: benu302000
10 Replies
4. UNIX for Dummies Questions & Answers
Hi All
Please excuse another straightforward question. When creating a tar archive from a directory I am attempting to use wildcards to eliminate certain filetypes (otherwise the archive gets too large). So I am looking for something along these lines.
tar -cf archive.tar * <minus all *.rst... (5 Replies)
Discussion started by: C3000
5 Replies
5. Shell Programming and Scripting
Hello
I have this script:
#!/bin/ksh
INPUTFILE=$1
TEMPFILE=$INPUTFILE.$$
OUTPUTFILE=$INPUTFILE.new
# nr of arguments has to be 1
if
then
echo "\nUsage: $0 inputfile\n"
return 1
fi
# inputfile must exist and be readable
if
then (13 Replies)
Discussion started by: emferrari
13 Replies
6. Shell Programming and Scripting
Hi All,
Need you guys' help to achieve the following:
I have some strings and i wish to threw off the end part that's in the file path.
From:
/directoryname1/subdirectoryname1/abc.txt
/directoryname2/subdirectoryname2/defggf.txt
To:
/directoryname1/subdirectoryname1/... (7 Replies)
Discussion started by: Radeon
7 Replies
7. UNIX for Dummies Questions & Answers
Is there some rule about using wildcards in path? Say I want to create a file, but one of the directories in the path is called 1433d.default and on different machines it will be called <some other string>.default
touch ~/Library/Application/*.default/myfile
In theory I thought that... (5 Replies)
Discussion started by: glev2005
5 Replies
8. UNIX for Dummies Questions & Answers
I am using this code to locate and modify one particular ID in a file containing thousands of entries
sed 's/^>OldID/>NewID/g' Infile > Outfile
How can I modify the code so I can rename all old IDs to a new unique ID?
I tried this
sed 's/^>*/>NewID/g' Infile > Outfile
but it did not... (10 Replies)
Discussion started by: Xterra
10 Replies
9. UNIX for Advanced & Expert Users
These 2 websites do a GREAT job of explaining different types of wildcards. I learned about the categories of characters which I never knew about at all.
GNU/Linux Command-Line Tools Guide - Wildcards
GREP (1 Reply)
Discussion started by: cokedude
1 Replies
10. Shell Programming and Scripting
to scp using windcards you use the following :
scp 'hostname:/home/username/diff_201110*' .
Enjoy ! (0 Replies)
Discussion started by: phpsnook
0 Replies
GREP(1) General Commands Manual GREP(1)
NAME
grep, egrep, fgrep - search a file for a pattern
SYNOPSIS
grep [ option ] ... expression [ file ] ...
egrep [ option ] ... [ expression ] [ file ] ...
fgrep [ option ] ... [ strings ] [ file ]
DESCRIPTION
Commands of the grep family search the input files (standard input default) for lines matching a pattern. Normally, each line found is
copied to the standard output; unless the -h flag is used, the file name is shown if there is more than one input file.
Grep patterns are limited regular expressions in the style of ed(1); it uses a compact nondeterministic algorithm. Egrep patterns are full
regular expressions; it uses a fast deterministic algorithm that sometimes needs exponential space. Fgrep patterns are fixed strings; it
is fast and compact.
The following options are recognized.
-v All lines but those matching are printed.
-c Only a count of matching lines is printed.
-l The names of files with matching lines are listed (once) separated by newlines.
-n Each line is preceded by its line number in the file.
-b Each line is preceded by the block number on which it was found. This is sometimes useful in locating disk block numbers by con-
text.
-s No output is produced, only status.
-h Do not print filename headers with output lines.
-y Lower case letters in the pattern will also match upper case letters in the input (grep only).
-e expression
Same as a simple expression argument, but useful when the expression begins with a -.
-f file
The regular expression (egrep) or string list (fgrep) is taken from the file.
-x (Exact) only lines matched in their entirety are printed (fgrep only).
Care should be taken when using the characters $ * [ ^ | ? ' " ( ) and in the expression as they are also meaningful to the Shell. It is
safest to enclose the entire expression argument in single quotes ' '.
Fgrep searches for lines that contain one of the (newline-separated) strings.
Egrep accepts extended regular expressions. In the following description `character' excludes newline:
A followed by a single character matches that character.
The character ^ ($) matches the beginning (end) of a line.
A . matches any character.
A single character not otherwise endowed with special meaning matches that character.
A string enclosed in brackets [] matches any single character from the string. Ranges of ASCII character codes may be abbreviated
as in `a-z0-9'. A ] may occur only as the first character of the string. A literal - must be placed where it can't be mistaken as
a range indicator.
A regular expression followed by * (+, ?) matches a sequence of 0 or more (1 or more, 0 or 1) matches of the regular expression.
Two regular expressions concatenated match a match of the first followed by a match of the second.
Two regular expressions separated by | or newline match either a match for the first or a match for the second.
A regular expression enclosed in parentheses matches a match for the regular expression.
The order of precedence of operators at the same parenthesis level is [] then *+? then concatenation then | and newline.
SEE ALSO
ed(1), sed(1), sh(1)
DIAGNOSTICS
Exit status is 0 if any matches are found, 1 if none, 2 for syntax errors or inaccessible files.
BUGS
Ideally there should be only one grep, but we don't know a single algorithm that spans a wide enough range of space-time tradeoffs.
Lines are limited to 256 characters; longer lines are truncated.
GREP(1)