Regular expressions are a means of matching a pattern of characters within a string.
26
votes
4answers
7k views
What is the difference between `grep`, `egrep`, and `fgrep`?
Can any one tell me the technical difference between grep and egrep, and fgrep and provide a suitable example?
When do I need to use grep over egrep and vice versa?
23
votes
2answers
15k views
How can I find files with certain extensions
How can I use find to find all files that have a .xls or .csv extension? I have seen a -regex option but I don't know how to use it.
14
votes
3answers
2k views
How to use find command to search for multiple extensions
I can get all jpg images by using:
find . -name "*.jpg"
But how can I add png files to the results as well?
13
votes
3answers
436 views
What is the difference between [[ $a == z* ]] and [ $a == z* ]?
Is there is any difference between these two.
[[ $a == z* ]]
and
[ $a == z* ]
Can I have an example where they would have different outputs?
Furthermore, how does the working of [[ ]] differs ...
13
votes
5answers
576 views
How to remove the (1) from filenames using the find command
I recently converted all of my FLAC files to a lower sampling rate of 44.1 kHz and bit depth of 24 bits (because iPhone/iPod don't support anything above that) using XLD on my Mac OS 10.7 (Lion).
...
12
votes
9answers
1k views
There must be a better way to replace single newlines only?
I am in the habit of writing one line per sentence because I typically compile things to LaTex, or am writing in some other format where line breaks get ignored. I use a blank line to indicate the ...
12
votes
3answers
4k views
Can grep output only specified groupings that match?
Say I have a file:
# file: 'test.txt'
foobar bash 1
bash
foobar happy
foobar
I only want to know what words appear after "foobar", so I can use this regex:
"foobar \(\w\+\)"
The parenthesis ...
11
votes
6answers
359 views
How can I grep a directory based on the contents of two successive lines?
How can I grep a directory for lines that contain "Foo", but only get matches when the next line also contains "Bar"?
11
votes
4answers
447 views
How do I choose specific files in a different directory using bash?
I want to list (or delete, or do some other operation) on certain files in a directory, like this:
$ ls /opt/somedir/
aa bb cc aa.txt bb.txt cc.txt
$ ls /opt/somedir/(aa|bb|cc) ## pseudo-bash ...
11
votes
3answers
835 views
Online grep exercises?
Are there any online grep tutorials that would feature some online tool for performing exercises? For example, having some predefined text sample and being told what patterns to find and so forth? It ...
11
votes
3answers
5k views
How to diff files ignoring comments (lines starting with #)?
I've two configuration files, the original from the package manager and a customized one modified by myself. I've added some comments to describe behavior.
How can I run diff on the configuration ...
9
votes
2answers
547 views
How to run grep with multiple AND patterns?
I would like to get the multi pattern match with implicit AND between patterns, i.e. equivalent to running several greps in a sequence:
grep pattern1 | grep pattern2 | ...
So how to convert it to ...
9
votes
6answers
600 views
Text Manipulation Across multiple lines
I Have a file that has text like this:
AAAA
BBBB
CCCC
DDDD
1234
5678
9012
3456
EEEE
7890
etc...
And i want to match up the Alphabetic lines with the Numeric lines so they are like this:
...
8
votes
6answers
727 views
Delete lines beginning with #
How do I delete lines beginning with a #, given that there can be whitespace on the left and right of the #?
# Master socket provides access to userdb information. It's typically
8
votes
2answers
497 views
What is the definition of a regular expression?
I recently got into a friendly argument with Ghoti about what constitutes a regular expression in the comments to my answer to this question. I claimed that the following is a regular expression:
...
8
votes
5answers
1k views
Software for visually building regular expressions?
I frequently need to create regular expressions for use in scripts (mostly when used in sed), however, I find, sometimes the regular expressions get very complicated and difficult for me to understand ...
7
votes
4answers
13k views
How do I grep for multiple patterns?
I want to find all lines in several files that match one of two patterns. I tried to find the patterns I'm looking for by typing
grep (foo|bar) *.txt
but the shell interprets the | as a pipe and ...
7
votes
2answers
698 views
How does a shell (bash, for example) expand regular expressions?
Assume that a directory has 100 files starting with the letter 'a'.
If I do a grep <some string> a* from the terminal, how will the shell handle this?
Will it expand the regular expression, ...
6
votes
6answers
2k views
How can you combine all lines that end with a backslash character?
Using a common command line tool like sed or awk, is it possible to join all lines that end with a given character, like a backslash?
For example, given the file:
foo bar \
bash \
baz
dude \
happy
...
6
votes
4answers
12k views
Finding text between two specific characters or strings
Say I have lines like this:
*[234]*
*[23]*
*[1453]*
where * represents any string (except a string of the form [number]). How can I parse these lines with a command line utility and extract the ...
6
votes
3answers
652 views
Replacing Multiple blank lines with a single blank line in vim / sed
Question more or less says it all. I'm aware that /^$/d will remove all blank lines, but I can't see how to say 'replace two or more blank lines with a single blank line'
Any ideas?
6
votes
4answers
3k views
How can I use sed to replace a multi-line string?
I've noticed that, if I add \n to a patter for a substitute using sed, it does not match. Example:
$ cat > alpha.txt
This is
a test
Please do not
be alarmed
$ sed -i'.original' 's/a test\nPlease ...
6
votes
1answer
430 views
Why isn't sed greedy in this simple case?
$echo "foo 65 bar" | sed -n -e 's/.*\([0-9]\+\).*/\1/p'
5
Why is the output not 65? Shouldn't sed greedily match the [0-9]\+ part? How do I tell sed to match all of 65?
6
votes
1answer
342 views
How do you save a complex regex for multiple reuse in sed?
In using sed, I often create rather complicated and intricate regexes that I need to match twice in a file. Is there a way for me to save this regex and just reference it twice?
Maybe something that ...
5
votes
2answers
809 views
How to use regex as field separator in awk?
I'm trying to use regex as a field seperator in awk. From my reading this seems possible but I can't get the syntax right.
rpm -qa | awk '{ 'FS == [0-9]' ; print $1 }'
awk: cmd. line:1: { FS
awk: ...
5
votes
3answers
2k views
What does \? mean in a regular expression?
The following command is used to search for a 7-digit phone number:
grep "[[:digit:]]\{3\}[ -]\?[[:digit:]]\{4\}" file
What does \? stand for?
5
votes
3answers
12k views
How to use regrex with AWK for string replacement in this example?
Suppose there is some text from a file:
(bookmarks
("Chapter 1 Introduction 1" "#1"
("1.1 Problem Statement and Basic Definitions 23" "#2")
("Exercises 31" "#30")
("Notes and References 42" "#34"))
)
...
5
votes
3answers
201 views
difference between .* and * in regular Expression
I've a file named "test" that contains
linux
Unixlinux
Linuxunix
it's linux
l...x
now when i use grep '\<l.*x\>' , it matches :
linux
it's linux
l...x
but when i use grep '\<l*x\>' ...
5
votes
2answers
641 views
Number of backslashes needed for escaping regex backslash on the command-line
I recently had trouble with some regex on the command-line, and
found that for matching a backslash, different numbers of
characters can be used. This number depends on the quoting used for
the regex ...
5
votes
1answer
2k views
What is the .gitignore pattern equivalent of the regex (Big|Small)(State|City)-[0-9]*\.csv
I have a regex I stuck in my .gitignore similar to:
(Big|Small)(State|City)-[0-9]*\.csv
It didn't work so I tested it against RegexLab.NET.
I then found the gitignore man page which led me to ...
5
votes
2answers
91 views
exact match in regrex when using vim, man, or less
when using vim, man, or less, I want to do some exact match in regrex
for example, when using man, I want to check the argument '-c'
if I use
/'-c'
the matching could be -cim ...
5
votes
1answer
281 views
Why do some regex commands have opposite intepretations of '\' with various characters?
Take, for example, this command:
find . -regex ".*\.\(cpp\|h\)"
This will find all the .h and .cpp files in your directory. The period character '.' in regular expressions usually means "any ...
5
votes
3answers
198 views
VIM see regular expressions matches as you type
If I type /regex then the cursor temporarily jumps to the first match and all matches are highlighted. This updates as I type. Is it possible to get this behavior when I'm getting ready to make a ...
5
votes
3answers
527 views
Regex & Sed/Perl: Match word that ISN'T preceded by another word
I'd like to use sed or perl to replace all occurrences of a word that doesn't have a certain word in front of it.
For example, I have a text file that contains a plot of a movie and I want to replace ...
5
votes
1answer
343 views
Why are capital letters included in a range of lower-case letters in an awk regex?
$ echo ABC | awk '$0 ~ /^[a-b]/'
ABC
$ echo ABC | awk '$0 ~ /^[a-a]/'
$ echo ABC | awk '$0 ~ /^a/'
$
You see. /[a-b]/ captures A, but /[a-a]/ or /a/ doesn't. Why?
5
votes
2answers
305 views
regex wanted to exclude a string
I want to have an expression that targets all lines that begin with http, end with icon.ico and do not contain config.privoxy.org. In the sample list below, I would like to catch all except the third ...
5
votes
2answers
873 views
Pattern Matching Exclude Duplicate Characters
Is there a regular expression for the following that matches characters in a character set but only once? In other words, once a character is found, remove it from the set.
If grep cannot do this, ...
4
votes
2answers
166 views
Why does this add spaces? echo “x ax” | sed 's/x\s*/x /'
I want to find a x, and replace the 0 or more following spaces (\s*) with just a single space.
echo "x ax" | sed 's/x\s*/x /'
For some reason, instead of replacing the spaces with the single space, ...
4
votes
3answers
136 views
Delete XML node containing certain element
I want to remove all Placemarks from a KML file that contain the element <tessellate>. The following block should be wholly removed:
<Placemark>
...
4
votes
2answers
950 views
How to search and replace multiple needles by one word via one expression?
Assume you have a text file:
foo fnord bar
bizz foo poit
And now I would want to replace both "foo" and "bar" into "narf".
I know I could use:
sed -e 's/foo/narf/g' -e 's/bar/narf/g' fileName
...
4
votes
2answers
2k views
Using regular expressions with cp
This is a simple question. I'm trying to copy all of the files in the current directory that start with "axis-2" and end with ".jar" into a target directory, let's say it's ~/MyDirectory. My first ...
4
votes
2answers
288 views
grep caret appears to have no effect
I was under the impression that a caret symbol means "beginning of the line" with Extended POSIX regular expressions.
However, when I use it with grep it behaves unexpectedly.
#grep --version
GNU ...
4
votes
1answer
496 views
How can I match the page break character in a regular expression?
Nano calls it ^L, but of course, typing something like
$ grep -v "^\^L" file
doesn't work. Its unicode codepoint is 000C. How can I match it in a regular expression?
4
votes
1answer
1k views
Substitute text with sed and keep part of the original text
I am trying to convert
<id>1</id>
<Name>ENTERPRISE RESOURCE PLANNING</Name>
to:
<column name="id">1</column>
<column name="Name">ENTERPRISE RESOURCE ...
4
votes
3answers
94 views
Remove string from a particular field using awk/sed
I have a file (>80,000 lines) that looks likes this:
chr1 GTF2GFF chromosome 1 249213345 . . . ID=chr1;Name=chr1
chr1 GTF2GFF gene 11874 14408 . + . ...
4
votes
2answers
89 views
remove duplicate files
On my Mac OS X 10.6.7, iTunes duplicated every single file in my music library. Now I have 3,840 files instead of 1,920. The problem is that iTunes didn't simply duplicate the whole folder, but each ...
4
votes
4answers
835 views
Recursively rename subdirectories that match a regex
I have a media server with a folder called Series. (/media/Expansion2/Series/)
In it, I have (surprise!) TV series. These are just the show names, e.g., /media/Expansion2/Series/The Big Bang Theory/
...
4
votes
1answer
1k views
grep for words of no more than a certain length
I'm looking for a way to grep things like: i log for E M, i 1 f x i 0, I xi 1, 3 1,. simply based on number of characters.
Nothing in that hypothetical output is longer than three characters. This ...
4
votes
1answer
162 views
Emacs simple arithmetics in query replace
Is it possible to do the following in emacs:
Query replace all numbers in a region by the number +n, for example if you have:
12 and 7 are nice numbers
let n be 3, then it should transform to
15 ...
4
votes
3answers
158 views
vim regex not need \ to escape
In Vim is there an option to write regexs in the same style as Awk for example/sp\{0,\}/ Would be
/sp{0,}/
