replace
a string-replacement utility
Synopsis
add an example, a script, a trick and tips
examples
source
Can I replace Windows with Wine?
I would first check to see if the games that you are playing have
a Linux port already. This way you could avoid using Wine or
Parallels in order to play them.
I haven't had great experience running newer windows games
(especially newer FPS titles) through an emulator such as Wine.
As far as partitioning your HDD to dual boot windows and linux,
if you are going to be in windows most of the time playing games,
I would devote about 60% of the HDD space to windows and the
other 40% to your linux installation.
Windows cannot read ext4 partitions AFAIK. Although I do believe
that there are a few programs out there that will let you browse
the partitions from within windows.
source
Replaces images\(.*)" with images/\1" in all files?
Check if this works for you
sed "s/images\\\/images\\//g"
source
Automatic replacement of expressions
What you are looking for is called "Pattern Capture", where a
particular pattern matched by a regular expression is saved in a
variable. The details of how this is done depend on the language
used (Perl, awk, sed or whatever).
Your problem is a bit more complicated because:
-
You should not parse HTML
with regular expressions
-
Regular expressions become more complicated in most languages
when your search pattern spans multiple lines.
-
Since you have not included a sample of your actual code, it
is harder for me to find a unique pattern with which to
anchor my regular expression. In the script below I am using
<moreCodeThatAlwaysStaysTheSame>
and
.someCodeAndOth
you will need to change that to
reflect actual unique patterns that flank the text you want
to replace.
-
You should not parse HTML with regular expressions
All that said, here is a Perl script that will replace the
patterns you gave in your question:
#!/usr/bin/perl
###############################################
# This sets the line separator to a string #
# instead of a new line (\n). Use something #
# that uniquely delimits the code you want to #
# replace. #
###############################################
local $/="<moreCodeThatAlwaysStaysTheSame>";
#######################################################
# Read the input file, line by line. Remember that #
# because of the previous command, a line is expected #
# to end with "<moreCodeThatAlwaysStaysTheSame>" #
#######################################################
while (<>) {
#####################################################
# $str is what we want to replace the pattern with. #
# "XXX" will be replaced by the correct mp3. #
#####################################################
my $str=<<Eof;
<audio controls="controls">
<source src="XXXX" type="audio/mpeg">
<embed height="50" width="100" src="XXXX">
</audio>
Eof
###########################################################
# Match the entire string we will replace AND the #
# mp3 we are looking for. In Perl (and other languages) #
# placing a regex pattern in (parentheses) captures it. #
# We can now refer to the 1st captured pattern as $1, the #
# second as $2 etc. #
###########################################################
/(.someCodeAndOth.+?src=.+\/(.+?\.mp3).+?$)/s;
###################################################
# Save the matches into variables, otherwise they #
# will be lost at the next match operation. #
###################################################
my ($match,$rep,$mp3)=($1,$1,$2);
###################################################
# Replace "XXXX" with the appropriate mp3 in $str #
###################################################
$str=~s/XXXX/$mp3/g;
#########################################
# Replace the matched pattern with $str #
#########################################
s/$match/$str/;
#################
# Print it out! #
#################
print;
}
Save that script as foo.pl
and run it on your file
as follows:
perl foo.pl input_file.html > output_file.html
source
How do I exclude match and change only specific character with sed
From your code snippet, the sed
expression looks
correct - it will replace every '0' character with the characters
'correct'. If you only want the output from your
echo
command to be updated, you could put the
sed
command on the output from echo
,
eg:
some command
date >> /file.txt
echo $? | sed 's/0/correct/' >> /file.txt
(note removing 'echo' and 'cat' commands will have no effect on
the output)
In the context you're using the -i
option, it's
actually a commandline option, rather than a sed
script command - it's a different section in the man
page:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
This means it will update the source file (which is precisely
what you want in your example).
However, note that in this example, the exit code being checked
is the exit code of date
, and not your command. In
fact in your example, it's checking the exit code of
echo
, which I suspect is even less helpful for you.
A more standard way of performing this check would be along the
lines of:
some command
result=$?
date >> /file.txt
if [ $result -eq 0 ]
then
echo "Command finished successfully" >> /file.txt
else
echo "Command failed with exit code $result" >> /file.txt
fi
description
The
replace utility program changes strings in place in
files or on the standard input.
Invoke
replace in one of the following ways:
shell>
replace from to [from to] ...
-- file_name
[file_name] ...
shell> replace from to [from
to] ... < file_name
from
represents a string to look for and to represents its
replacement. There can be one or more pairs of strings.
Use the
-- option to indicate where the
string-replacement list ends and the file names begin.
In this case, any file named on the command line is modified
in place, so you may want to make a copy of the original
before converting it. replace prints a message
indicating which of the input files it actually
modifies.
If the
-- option is not given, replace
reads the standard input and writes to the standard
output.
replace
uses a finite state machine to match longer strings first.
It can be used to swap strings. For example, the following
command swaps a and b in the given files, file1 and
file2:
shell>
replace a b b a -- file1 file2 ...
The
replace program is used by msql2mysql. See
msql2mysql(1).
replace
supports the following options.
•
-?, -I
Display a help
message and exit.
•
-#debug_options
Enable
debugging.
•
-s
Silent mode.
Print less information what the program does.
•
-v
Verbose mode.
Print more information about what the program does.
•
-V
Display version
information and exit.
copyright
Copyright © 1997, 2013, Oracle and/or its affiliates. All rights
reserved.
This software and related documentation are provided under a
license agreement containing restrictions on use and disclosure
and are protected by intellectual property laws. Except as
expressly permitted in your license agreement or allowed by law,
you may not use, copy, reproduce, translate, broadcast, modify,
license, transmit, distribute, exhibit, perform, publish, or
display any part, in any form, or by any means. Reverse
engineering, disassembly, or decompilation of this software,
unless required by law for interoperability, is prohibited.
The information contained herein is subject to change without
notice and is not warranted to be error-free. If you find any
errors, please report them to us in writing.
If this software or related documentation is delivered to the
U.S. Government or anyone licensing it on behalf of the U.S.
Government, the following notice is applicable:
U.S. GOVERNMENT RIGHTS Programs, software, databases, and related
documentation and technical data delivered to U.S. Government
customers are "commercial computer software" or "commercial
technical data" pursuant to the applicable Federal Acquisition
Regulation and agency-specific supplemental regulations. As such,
the use, duplication, disclosure, modification, and adaptation
shall be subject to the restrictions and license terms set forth
in the applicable Government contract, and, to the extent
applicable by the terms of the Government contract, the
additional rights set forth in FAR 52.227-19, Commercial Computer
Software License (December 2007). Oracle USA, Inc., 500 Oracle
Parkway, Redwood City, CA 94065.
This software is developed for general use in a variety of
information management applications. It is not developed or
intended for use in any inherently dangerous applications,
including applications which may create a risk of personal
injury. If you use this software in dangerous applications, then
you shall be responsible to take all appropriate fail-safe,
backup, redundancy, and other measures to ensure the safe use of
this software. Oracle Corporation and its affiliates disclaim any
liability for any damages caused by use of this software in
dangerous applications.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. MySQL is a trademark of Oracle Corporation and/or its
affiliates, and shall not be used without Oracle’s express
written authorization. Other names may be trademarks of their
respective owners.
This software and documentation may provide access to or
information on content, products, and services from third
parties. Oracle Corporation and its affiliates are not
responsible for and expressly disclaim all warranties of any kind
with respect to third-party content, products, and services.
Oracle Corporation and its affiliates will not be responsible for
any loss, costs, or damages incurred due to your access to or use
of third-party content, products, or services.
This document in any form, software or printed matter, contains
proprietary information that is the exclusive property of Oracle.
Your access to and use of this material is subject to the terms
and conditions of your Oracle Software License and Service
Agreement, which has been executed and with which you agree to
comply. This document and information contained herein may not be
disclosed, copied, reproduced, or distributed to anyone outside
Oracle without prior written consent of Oracle or as specifically
provided below. This document is not part of your license
agreement nor can it be incorporated into any contractual
agreement with Oracle or its subsidiaries or affiliates.
This documentation is NOT distributed under a GPL license. Use of
this documentation is subject to the following terms:
You may create a printed copy of this documentation solely for
your own personal use. Conversion to other formats is allowed as
long as the actual content is not altered or edited in any way.
You shall not publish or distribute this documentation in any
form or on any media, except if you distribute the documentation
in a manner similar to how Oracle disseminates it (that is,
electronically for download on a Web site with the software) or
on a CD-ROM or similar medium, provided however that the
documentation is disseminated together with the software on the
same medium. Any other use, such as any dissemination of printed
copies or use of this documentation, in whole or in part, in
another publication, requires the prior written consent from an
authorized representative of Oracle. Oracle and/or its affiliates
reserve any and all rights to this documentation not expressly
granted above.
For more information on the terms of this license, or for details
on how the MySQL documentation is built and produced, please
visit MySQL Contact &
Questions.
For additional licensing information,
including licenses for third-party libraries used by MySQL
products, see Preface and Legal Notices.
For help with using MySQL, please visit
either the MySQL
Forums or MySQL Mailing Lists where you can discuss your issues with other MySQL
users.
For additional documentation on MySQL
products, including translations of the documentation into other
languages, and downloadable versions in variety of formats,
including HTML and PDF formats, see the MySQL Documentation Library.
see also
For
more information, please refer to the MySQL Reference
Manual, which may already be installed locally and which is
also available online at
http://dev.mysql.com/doc/.
author
Oracle
Corporation (http://dev.mysql.com/).