Sponsored Content
Top Forums Shell Programming and Scripting No. of underscores in a file name Post 302853195 by alister on Friday 13th of September 2013 11:29:40 AM
Old 09-13-2013
Quote:
Originally Posted by wisecracker
Code:
text="a_b_c"; count=0; for n in $( seq 0 1 ${#text} ); do if [ "${text:$n:1}" == "_" ]; then count=$[ ( $count + 1 ) ]; fi; done; echo""; echo "Underscores = $count"

If your shell supports substring expansion (${text:$n:1}), then you can probably replace all of that with a much simpler, pattern substitution alternative:
Code:
u=${text//[!_]/}
echo Underscores = ${#u}

Regards,
Alister
This User Gave Thanks to alister For This Post:
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

change spaces to underscores script !!!

Hi everybody! Im not good in scripting and I need a script to take all the files with spaces in their names and change it to underscores. alice cooper.mp3 >> alice_cooper.mp3 Thanks in advance. (2 Replies)
Discussion started by: piltrafa
2 Replies

2. Shell Programming and Scripting

Scripting to convert underscores to spaces

Greetings, I have a bunch of music files that I want to strip the underscores out, and leave only spaces. All that I've found on the web is how to add underscores to files that have spaces, and reversing the "tr" command does not make a difference. Here is how to convert spaces to... (6 Replies)
Discussion started by: brakeb
6 Replies

3. Shell Programming and Scripting

extract string from file name between two underscores

Hi, Here is my question, I need to extract string between two underscores from the filename for example, filename is atmos_8xdaily_instant_300x300_1_12.nc what I want to extract is 300x300. There are many such files in my directory, so I guess the code should be like: for file... (7 Replies)
Discussion started by: 1988PF
7 Replies

4. Shell Programming and Scripting

Match list of strings in File A and compare with File B, C and write to a output file in CSV format

Hi Friends, I'm a great fan of this forum... it has helped me tone my skills in shell scripting. I have a challenge here, which I'm sure you guys would help me in achieving... File A has a list of job ids and I need to compare this with the File B (*.log) and File C (extend *.log) and copy... (6 Replies)
Discussion started by: asnandhakumar
6 Replies

5. Shell Programming and Scripting

How to find no of underscores in a variable?

Hi i have a variable var=a_b_c i want command to find no. of underscores in a variable Thank you (7 Replies)
Discussion started by: pracheth
7 Replies

6. UNIX for Dummies Questions & Answers

Appending "_" (underscores) to variable names

Hello, I have a file, inputs.list that contain prefixes to files that are inputs for a program inputs.list A B C D E ... My files are of the format A_1, A_2, B_1, B_2 and so on. I am planning to run a shell script that takes each line from the above file and feed it to the runProg.sh... (3 Replies)
Discussion started by: Gussifinknottle
3 Replies

7. Shell Programming and Scripting

Compare 2 text file with 1 column in each file and write mismatch data to 3rd file

Hi, I need to compare 2 text files with around 60000 rows and 1 column. I need to compare these and write the mismatch data to 3rd file. File1 - file2 = file3 wc -l file1.txt 58112 wc -l file2.txt 55260 head -5 file1.txt 101214200123 101214700300 101250030067 101214100500... (10 Replies)
Discussion started by: Divya Nochiyil
10 Replies

8. Shell Programming and Scripting

How to separate data with varying amounts of underscores?

All, I've searched and haven't found a solution for my particular issue. I have a file with lines of data that contain varying amounts of underscores imbedded. But all the strings have a final underscore and an interface name: dmk_hcn_dalian2.XXXX.XXX.XX.COM_Se0/0/0... (4 Replies)
Discussion started by: turk22
4 Replies

9. Shell Programming and Scripting

Replace spaces with underscores up to first comma but not after the comma

I have a comma delimited file of major codes and descriptions. I want to replace all occurrences of spaces with underscores up to the first comma (only in the first field), but not replace spaces following the comma. For instance I have the following snippet of the file: EK ED,Elementary and... (7 Replies)
Discussion started by: tdouty
7 Replies

10. Shell Programming and Scripting

Shell script (sh file) logic to compare contents of one file with another file and output to file

Shell script logic Hi I have 2 input files like with file 1 content as (file1) "BRGTEST-242" a.txt "BRGTEST-240" a.txt "BRGTEST-219" e.txt File 2 contents as fle(2) "BRGTEST-244" a.txt "BRGTEST-244" b.txt "BRGTEST-231" c.txt "BRGTEST-231" d.txt "BRGTEST-221" e.txt I want to get... (22 Replies)
Discussion started by: pottic
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 10:48 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy