As has been mentioned, you could use a different regular expression delimiter, a character that you know will never appear in the pathname.
Instead of
you can use
if the at symbol will never be used.
That said, interpolating values like that is fragile when the tool does not support some form of quoting to strip special meaning from metacharacters (at least in this case it's in the replacement text, otherwise you'd have more special characters to worry about if the parameter expansion were ocurring in the regular expression section of the sed command. Even so, ampersand is still special in this context, though admittedly not very likely to appear in a pathname.).
To be safe, to simplify, and to minimize stress, I would tend to prefer something that avoids interpolating into special contexts as much as possible. Possible alternatives:
We have a script that runs in ksh on HP-UX 11.11. It takes three arguments. The last argument can be a filename or wildcard character. For example:
script -s hello -t goodbye '*.d*'
In a case such as this, I would wrap single quotes around the final argument because I dont want the shell to... (4 Replies)
I'm in the habit of using the following type of loop structure:
for num in `seq $1 $2`
do
command
doneWhile `seq $1 $2` is not exactly a huge resource hog, I would like to learn a better way. It seems that brace expansion is a good way to go:
for num in {3..10}The problem, though, is... (2 Replies)
I know this script is crummy, but I was just messing around.. how do I get sed's insert command to allow variable expansion to show the filename?
#!/bin/bash
filename=`echo $0`
/usr/bin/sed '/#include/ {
i\
the filename is `$filename`
}' $1
exit 0 (8 Replies)
i write a batch file , here is the content.
dirname='date +%Y-%m-%d'
mkdir dirname
but it doen's work, it just create a folder named date and +%Y-%m-%d.
i have tried run the command seperately in the bash prompt. after the first
sentence executed , i use $dirname to watch the value of... (4 Replies)
Hi forum,
in my bash script I've many lines executing commands with redirection to log files.
...
xyz_cmd 2>&1 > $BASENAME.$LINENO
The trailing part of these lines doesn't look nice and I like to put it into a variable.
The (not working) idea is something like that
... (3 Replies)
So, I was bored on the train today, and was thinking of ways to loop through elements of an array. I came up with the following simple script, but it doesn't work as brace expansion doesn't seem to work with variables. Is there something I'm missing, or does the shell just not work like this?
... (4 Replies)
Hello,
I use a lot this command to edit a bunch of files at once
find . -name filename" | xargs -ifoo sh -c 'echo foo ; sed "s/pattern1/pattern2/" foo > ./tmp ; mv -f ./tmp foo'
I'm trying to put a function on my .bashrc file.
function loopSed()
{
local filename=$1
local... (2 Replies)
Hello,
I have one variable coming from one file:
abc=$xyz/filename.txt where $xyz is defined in .profile file as say, /usr/dev/src
i am passing abc variable to one perl script as input parameter.
perl 123.pl -s $abc
But inside the perl script execution, the variable $abc is just... (1 Reply)
Hello.
The file /etc/fstab contains
UUID=957c3295-9944-1593-82e2-2b90dede4312 / ext4 noatime,discard,acl,user_xattr 1 1
I fill a variable
SOME_LINE=$( cat /etc/fstab | grep \/\..*ext4 | grep noatime,discard )echo $SOME_LINE... (3 Replies)
Discussion started by: jcdole
3 Replies
LEARN ABOUT PLAN9
regexp
REGEXP(6) Games Manual REGEXP(6)NAME
regexp - regular expression notation
DESCRIPTION
A regular expression specifies a set of strings of characters. A member of this set of strings is said to be matched by the regular
expression. In many applications a delimiter character, commonly bounds a regular expression. In the following specification for regular
expressions the word `character' means any character (rune) but newline.
The syntax for a regular expression e0 is
e3: literal | charclass | '.' | '^' | '$' | '(' e0 ')'
e2: e3
| e2 REP
REP: '*' | '+' | '?'
e1: e2
| e1 e2
e0: e1
| e0 '|' e1
A literal is any non-metacharacter, or a metacharacter (one of .*+?[]()|^$), or the delimiter preceded by
A charclass is a nonempty string s bracketed [s] (or [^s]); it matches any character in (or not in) s. A negated character class never
matches newline. A substring a-b, with a and b in ascending order, stands for the inclusive range of characters between a and b. In s,
the metacharacters an initial and the regular expression delimiter must be preceded by a other metacharacters have no special meaning and
may appear unescaped.
A matches any character.
A matches the beginning of a line; matches the end of the line.
The REP operators match zero or more (*), one or more (+), zero or one (?), instances respectively of the preceding regular expression e2.
A concatenated regular expression, e1e2, matches a match to e1 followed by a match to e2.
An alternative regular expression, e0|e1, matches either a match to e0 or a match to e1.
A match to any part of a regular expression extends as far as possible without preventing a match to the remainder of the regular expres-
sion.
SEE ALSO awk(1), ed(1), sam(1), sed(1), regexp(2)REGEXP(6)