Sponsored Content
Top Forums Shell Programming and Scripting Cut the data with a string that has \ in it Post 303019854 by Don Cragun on Sunday 8th of July 2018 07:53:12 PM
Old 07-08-2018
Expanding a little bit on what RudiC said in post #4 in this thread, shell variable expansions do not occur in single-quoted strings. What chandan.chaman suggested in post #5 would also work, but is more complicated than is needed.

Are backslash characters the only characters that are special in basic regular expressions that might appear in the text you want to replace? (Note that other BRE special characters include the period, opening square bracket (i.e., [), asterisk, circumflex, and dollar sign).

Are you creating the search pattern and replacement strings (so you can escape "special" characters)? Or, are they created by users invoking your script?

Does the pattern you want to replace in your file only occur once in your file? Or, can it appear on several lines in your file? Can it ever occur more than once on a single line in your file (and need to have every occurrence replaced)? If the pattern is to be treated as a literal string and doesn't need to be replaced more than once on any line, you might want to use awk's index() function to find your pattern and use substr() a couple of times to do the replacements instead of using sed's or ed's substitute command or awk's sub() or gsub() function to replace your text.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

read string, check string length and cut

Hello All, Plz help me with: I have a csv file with data separated by ',' and optionally enclosed by "". I want to check each of these values to see if they exceed the specified string length, and if they do I want to cut just that value to the max length allowed and keep the csv format as it... (9 Replies)
Discussion started by: ozzy80
9 Replies

2. Shell Programming and Scripting

Cut data and put it in next line

here is my sample file dn: cn=Anandmohan Singh,ou=addressbook,dc=thbs,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: Anandmohan Singh givenName: Anandmohan mail: anand_ms@thbs.com mobile: 9986010455 ou: null... (16 Replies)
Discussion started by: namishtiwari
16 Replies

3. Shell Programming and Scripting

Cut Data In Bigfile

I want to create new file for 'NO 0004/01' and 'NO 0005/01' only How can i do It for shot time Data FILE Data.txt (Data ~1,000,000 Line) START NO 0001/01 HEAD AAAA BODY1 AAA BODY2 AAA TAIL AAA END START B1 NO 0001/02 HEAD AAAA BODY1 AAA BODY2 AAA BODY3 AAA TAIL AAA (2 Replies)
Discussion started by: kittiwas
2 Replies

4. Shell Programming and Scripting

Cut column and edit data

Mar 26 12:32:53 name sshd: 192.168.1.14 Mar 27 12:42:53 name sshd: 192.168.1.14 how to make this data in output as: "Mar 26 12:32:53","name","sshd","192.168.1.14" "Mar 27 12:42:53","name","sshd","192.168.1.14" anyone plzz help me out!!!!!!!!!!!!!! (4 Replies)
Discussion started by: jacky29
4 Replies

5. Shell Programming and Scripting

perl search string for cut data

perl -lne '$/="1H1XXXXX";print $_ if /0001|0002|0003/' data.txt> output.txt more data.txt 1H1XXXXX|0001|Y| aaa bbb ccc 1H1XXXXX|0005|N| bbb g 1H1XXXXX|0001|Y| hhh ddd 222 1H1XXXXX|0002|Y| 444 1H1XXXXX|0002|N| 222 1H1XXXXX|0003|Y| hhhh (3 Replies)
Discussion started by: kittiwas
3 Replies

6. UNIX for Dummies Questions & Answers

Data manipulation with cut command

Hi, I need some help with the cut command, can i use it to cut a certain number of characters from string starting from the end. say my string is like this some junk data xyz1@pqr.com xyz2@pqr.com some more junk data I can't exactly say how many email addresses are present in between. But the... (4 Replies)
Discussion started by: poojabhat
4 Replies

7. Shell Programming and Scripting

Cut and paste data in new file

HI Guys, I have file A: Abc XyZ Abc Xyz Kal Kaloo Abc XyZ Abc Xyz Kalpooo Abc XyZ Abc Xyz Kloo Abc Abc Klooo I want file B Abc XyZ Abc Xyz Kal Kaloo Abc XyZ Abc Xyz Kalpooo Abc XyZ Abc Xyz Kloo File A is now 1 lines Abc Abc Klooo Cut all lines which have xyz... (2 Replies)
Discussion started by: asavaliya
2 Replies

8. Shell Programming and Scripting

Cut the string

Hi in a directory i've files having the following name for_category_info_19990101984301 for_catgry_meta_19991111214601 ------- I just want the name till year and month i.e; for_category_info_199901 for_catgry_meta_199911 How can i achieve the above string Thanks (2 Replies)
Discussion started by: smile689
2 Replies

9. Shell Programming and Scripting

Cut the string

---------- Post updated at 10:31 AM ---------- Previous update was at 10:28 AM ---------- Hello, I am trying to get the string cut based on the following needs: String1=Submitted request 25574824 for CONCURRENT SQLAP RUAPACTUALSEXT Y RUAPACTUALS122313100616.dat "2013/01/12 14:50:44"... (6 Replies)
Discussion started by: cartrider
6 Replies

10. What is on Your Mind?

Cut Over to New Data Center and Upgraded OS Done. :)

Three days ago we received an expected notice from our long time data center that they were going dark on Sept 12th. About one and a half hours ago, after three days of marathon work, I just cut over the unix.com to a new data center with a completely new OS and Ubuntu distribution. (22 Replies)
Discussion started by: Neo
22 Replies
PREG_REPLACE(3) 							 1							   PREG_REPLACE(3)

preg_replace - Perform a regular expression search and replace

SYNOPSIS
mixed preg_replace (mixed $pattern, mixed $replacement, mixed $subject, [int $limit = -1], [int &$count]) DESCRIPTION
Searches $subject for matches to $pattern and replaces them with $replacement. PARAMETERS
o $pattern - The pattern to search for. It can be either a string or an array with strings. Several PCRE modifiers are also available. o $replacement - The string or an array with strings to replace. If this parameter is a string and the $pattern parameter is an array, all pat- terns will be replaced by that string. If both $pattern and $replacement parameters are arrays, each $pattern will be replaced by the $replacement counterpart. If there are fewer elements in the $replacement array than in the $pattern array, any extra $pat- terns will be replaced by an empty string. $replacement may contain references of the form \ n or (since PHP 4.0.4) $ n, with the latter form being the preferred one. Every such reference will be replaced by the text captured by the n'th parenthesized pattern. n can be from 0 to 99, and \0 or $0 refers to the text matched by the whole pattern. Opening parentheses are counted from left to right (starting from 1) to obtain the number of the capturing subpattern. To use backslash in replacement, it must be doubled ( "\\" PHP string). When working with a replacement pattern where a backreference is immediately followed by another number (i.e.: placing a literal number immediately after a matched pattern), you cannot use the familiar \1 notation for your backrefer- ence. \11, for example, would confuse preg_replace(3) since it does not know whether you want the \1 backreference followed by a literal 1, or the \11 backreference followed by nothing. In this case the solution is to use ${1}1. This creates an isolated $1 backreference, leaving the 1 as a literal. When using the deprecated e modifier, this function escapes some characters (namely ', ", and NULL) in the strings that replace the backreferences. This is done to ensure that no syntax errors arise from backref- erence usage with either single or double quotes (e.g. 'strlen('$1')+strlen("$2")'). Make sure you are aware of PHP's string syntax to know exactly how the interpreted string will look. o $subject - The string or an array with strings to search and replace. If $subject is an array, then the search and replace is performed on every entry of $subject, and the return value is an array as well. o $limit - The maximum possible replacements for each pattern in each $subject string. Defaults to -1 (no limit). o $count - If specified, this variable will be filled with the number of replacements done. RETURN VALUES
preg_replace(3) returns an array if the $subject parameter is an array, or a string otherwise. If matches are found, the new $subject will be returned, otherwise $subject will be returned unchanged or NULL if an error occurred. ERRORS
/EXCEPTIONS As of PHP 5.5.0 E_DEPRECATED level error is emitted when passing in the "e" modifier. As of PHP 7.0.0 E_WARNING is emited in this case and "e" modifier has no effect. CHANGELOG
+--------+---------------------------------------------------+ |Version | | | | | | | Description | | | | +--------+---------------------------------------------------+ | 7.0.0 | | | | | | | Support for the /e modifier has been removed. | | | Use preg_replace_callback(3) instead. | | | | | 5.5.0 | | | | | | | The /e modifier is deprecated. Use | | | preg_replace_callback(3) instead. See the | | | PREG_REPLACE_EVAL documentation for additional | | | information about security risks. | | | | | 5.1.0 | | | | | | | Added the $count parameter | | | | +--------+---------------------------------------------------+ EXAMPLES
Example #1 Using backreferences followed by numeric literals <?php $string = 'April 15, 2003'; $pattern = '/(w+) (d+), (d+)/i'; $replacement = '${1}1,$3'; echo preg_replace($pattern, $replacement, $string); ?> The above example will output: April1,2003 Example #2 Using indexed arrays with preg_replace(3) <?php $string = 'The quick brown fox jumped over the lazy dog.'; $patterns = array(); $patterns[0] = '/quick/'; $patterns[1] = '/brown/'; $patterns[2] = '/fox/'; $replacements = array(); $replacements[2] = 'bear'; $replacements[1] = 'black'; $replacements[0] = 'slow'; echo preg_replace($patterns, $replacements, $string); ?> The above example will output: The bear black slow jumped over the lazy dog. By ksorting patterns and replacements, we should get what we wanted. <?php ksort($patterns); ksort($replacements); echo preg_replace($patterns, $replacements, $string); ?> The above example will output: The slow black bear jumped over the lazy dog. Example #3 Replacing several values <?php $patterns = array ('/(19|20)(d{2})-(d{1,2})-(d{1,2})/', '/^s*{(w+)}s*=/'); $replace = array ('3/4/12', '$1 ='); echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27'); ?> The above example will output: $startDate = 5/27/1999 Example #4 Strip whitespace This example strips excess whitespace from a string. <?php $str = 'foo o'; $str = preg_replace('/ss+/', ' ', $str); // This will be 'foo o' now echo $str; ?> Example #5 Using the $count parameter <?php $count = 0; echo preg_replace(array('/d/', '/s/'), '*', 'xp 4 to', -1 , $count); echo $count; //3 ?> The above example will output: xp***to 3 NOTES
Note When using arrays with $pattern and $replacement, the keys are processed in the order they appear in the array. This is not neces- sarily the same as the numerical index order. If you use indexes to identify which $pattern should be replaced by which $replace- ment, you should perform a ksort(3) on each array prior to calling preg_replace(3). SEE ALSO
PCRE Patterns, preg_quote(3), preg_filter(3), preg_match(3), preg_replace_callback(3), preg_split(3), preg_last_error(3). PHP Documentation Group PREG_REPLACE(3)
All times are GMT -4. The time now is 02:06 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy