Sponsored Content
Top Forums Shell Programming and Scripting Protecting variable indicator ($) from expansion Post 302708439 by phollox on Monday 1st of October 2012 02:42:54 PM
Old 10-01-2012
Data Protecting variable indicator ($) from expansion

Hello,

I use a lot this command to edit a bunch of files at once
Code:
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.
Code:
function loopSed()
{
local filename=$1
local pattern1=$2
local pattern2=$3
find . -name "$filename" | xargs -ifoo sh -c 'echo foo ; sed "s/$pattern1/$pattern2/" foo > ./tmp ; mv -f ./tmp foo'
}

But I get this error
Code:
sed: -e expression #1, char 0: no previous regular expression

And all the files are replaced by empty files. I would like to substitute only the files where the pattern search actually did something, and if it's possible, keeping the original file permissions.

Thanks,
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

ksh on HP-UX -- variable expansion

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)
Discussion started by: dangral
4 Replies

2. Shell Programming and Scripting

Basic variable expansion not working...

#!/usr/bin/bash if then echo "Not valid arguments entered. Just username should be entered." else USER_NAME=$1 FILE_NAME=$USER_NAME.info UNN=STUDIN\\\\$1 echo $UNN last STUDIN\\\\$1 last UNN If I type `last STUDIN\\eip060` it works but if I try to expand it with variable it is... (5 Replies)
Discussion started by: Zammy_bg
5 Replies

3. Shell Programming and Scripting

bash - delay expansion of variable

Hello - I have a bash script which does some logging, and I'd like to include the line number of the echo statement that pipes into $LOGGER: MYPID=$$ MYNAME=`basename $0` LOGGER="/usr/bin/logger -t $MYNAME($LINENO) -p daemon.error" ... echo 'this is an entry into the log file' | $LOGGER ... (3 Replies)
Discussion started by: scandora
3 Replies

4. UNIX for Dummies Questions & Answers

Variable brace expansion

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)
Discussion started by: treesloth
2 Replies

5. Shell Programming and Scripting

Variable expansion in sed

The objective of the code below is to create sed script to be later executed. However, it bonks because $ARCHIVENAME expands to a directory specification so the forward slashes cause problems. I can think of a few solutions that would involve redesigning the process, but I'm hoping there might be... (4 Replies)
Discussion started by: tiggyboo
4 Replies

6. Shell Programming and Scripting

delay variable expansion

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)
Discussion started by: wolfi089
3 Replies

7. UNIX for Dummies Questions & Answers

Can I use a variable with brace expansion?

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)
Discussion started by: DeCoTwc
4 Replies

8. Shell Programming and Scripting

Help required regarding variable expansion in UNIX

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)
Discussion started by: vikas_trl
1 Replies

9. Shell Programming and Scripting

Shell variable expansion in awk

I want to split one file input.tab into two separate ones, odd lines to input_reads1.txt, even lines to input_reads2.txt for a serial of files with similar name pattern. Also I want to "match" input/output file names to keep consistency of file name: CSEL_02.0_input.tab CSEL_03.4_input.tab... (2 Replies)
Discussion started by: yifangt
2 Replies

10. Shell Programming and Scripting

Bash variable expansion

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
erl_format(3erl)						C Library Functions						  erl_format(3erl)

NAME
erl_format - Create and Match Erlang Terms DESCRIPTION
This module contains two routines - one general function for creating Erlang terms and one for pattern matching Erlang terms. EXPORTS
ETERM * erl_format(FormatStr, ... ) Types char *FormatStr; This is a general function for creating Erlang terms using a format specifier and a corresponding set of arguments, much in the way printf() works. FormatStr is a format specification string. The set of valid format specifiers is as follows: * ~i - Integer * ~f - Floating point * ~a - Atom * ~s - String * ~w - Arbitrary Erlang term For each format specifier that appears in FormatStr , there must be a corresponding argument following FormatStr . An Erlang term is built according to the FormatStr with values and Erlang terms substituted from the corresponding arguments and according to the individual format specifiers. For example: erl_format("[{name,~a},{age,~i},{data,~w}]", "madonna", 21, erl_format("[{adr,~s,~i}]","E-street",42)); This will create an (ETERM *) structure corresponding to the Erlang term: [{name,madonna},{age,21},{data,[{adr,"E-street",42}]}] The function returns an Erlang term, or NULL if FormatStr does not describe a valid Erlang term. int erl_match(Pattern, Term) Types ETERM *Pattern,*Term; This function is used to perform pattern matching similar to that done in Erlang. Refer to an Erlang manual for matching rules and more examples. Pattern is an Erlang term, possibly containing unbound variables. Term is an Erlang term that we wish to match against Pattern . Term and Pattern are compared, and any unbound variables in Pattern are bound to corresponding values in Term . If Term and Pattern can be matched, the function returns a non-zero value and binds any unbound variables in Pattern . If Term Pat- tern do not match, the function returns 0. For example: ETERM *term, *pattern, *pattern2; term1 = erl_format("{14,21}"); term2 = erl_format("{19,19}"); pattern1 = erl_format("{A,B}"); pattern2 = erl_format("{F,F}"); if (erl_match(pattern1, term1)) { /* match succeeds: * A gets bound to 14, * B gets bound to 21 */ ... } if (erl_match(pattern2, term1)) { /* match fails because F cannot be * bound to two separate values, 14 and 21 */ ... } if (erl_match(pattern2, term2)) { /* match succeeds and F gets bound to 19 */ ... } erl_var_content() can be used to retrieve the content of any variables bound as a result of a call to erl_match() . Ericsson AB erl_interface 3.7.3 erl_format(3erl)
All times are GMT -4. The time now is 04:27 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy