08-05-2008
Non-destructive counting
I know this is an older thread, but I had a slightly different scenario, where I needed non-destructive counting and thought I'd share.
The s///g and tr/// methods already mentioned remove text from the original string. With a slight modification (adding parentheses and $1), the s/// operator can be used non-destructively:
$count = $string =~ s/([a-zA-Z])/$1/g;
In my specific case, I needed to sort a list of directories by depth. That is: /, /onelevel, /two/levels, /three/level/path, etc.
My solution was the following:
@dirs = sort {($a =~s/(\/)/$1/g) <=> ($b =~s/(\/)/$1/g)} @dirs;
It sorts the list by the number of times "/" appears in the directory, which (on a Unix system) is the same as the depth. The sort function is able to obtain the counts repeatedly and still have the original strings left over.
Note that my code doesn't correctly handle doubled slashes (e.g. "/my//dir") or relative paths (e.g., "../dir" or "/my/dir/../dir2"), but it's easy to handle those by ensuring that the paths are all absolute prior to the above line of code.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
I have two files I want to compare, one is a list of variables and the other is a text file COBOL program.
Basically what I want to do is display only those variables that appear in the COBOL program only once. However I would also accept a count of each variable as it appears in the COBOL... (2 Replies)
Discussion started by: Keith Gergel
2 Replies
2. UNIX for Dummies Questions & Answers
I need to count the number of files which have a search string, but counting the file only once
if search string is found.
eg: File1: Please note that there are 2 occurances of "aaa"
aaa
bbb
ccc
aaa
File2: Please note that there are 3 occurances of "aaa"
aaa
bbb
ccc... (1 Reply)
Discussion started by: sudheshnaiyer
1 Replies
3. Shell Programming and Scripting
Hi there, I have some user input in a variable called $VAR, and i need to ensure that the string is 5 or less characters .... does anybody know how i can count the characters in the variables ?
any help would be great, cheers (2 Replies)
Discussion started by: rethink
2 Replies
4. Shell Programming and Scripting
Gurus,
Need little guidance.
I have A.txt and B.txt file. B.txt file contains Unique strings.
Sample content of B.txt file for which i cut the fourth column uniquely and output directed to B.txt file
And A.txt file contains the above string as a fourth column which is last column.
So A.txt... (7 Replies)
Discussion started by: Shirisha
7 Replies
5. UNIX for Dummies Questions & Answers
Hello,
I'm new to using AWK and would be grateful for some basic advice to get me started.
I have a file consisting of 10 fields. Initially I wish to calculate the number of . , ~ and ^ characters in the 9th field ($9) of each line. This particular string also contains alphabetical... (6 Replies)
Discussion started by: Olly
6 Replies
6. UNIX for Dummies Questions & Answers
Hello,
I have a string like this 0:1:2:0:2:2:4:0:0:0:-200:500......
what i want is to break down how many different characters are there and their count. For example for above string it should display
0 - 5 times
1 - 1 times
2 - 3 times
4 - 1 times
.
.
.
I am stuck in writing... (8 Replies)
Discussion started by: exit86
8 Replies
7. Shell Programming and Scripting
HI,
i have a file like this
t.txt
f1|_f2|_
f1|_f2|_
f1|_f2|_
as if col delimiter is |_ and row delimiter |_\n
trying to count number of records using awk
$ awk 'BEGIN{FS="|_" ; RS="~~\n"} {n++}END{print n} ' t.txt
7
wondering how can i count this to 3 ?
thx (9 Replies)
Discussion started by: aksforum
9 Replies
8. Shell Programming and Scripting
I am trying to display the output of ls and also print the number of characters in EVERY file name. This is what I have so far:
#!/bin/sh
for x in `ls`; do
echo The number of characters in x | wc -m
done
Any help appreciated (1 Reply)
Discussion started by: LinuxNubBrah
1 Replies
9. Shell Programming and Scripting
Hi all,
Can someone help me in getting the following o/p
I/p:... (7 Replies)
Discussion started by: Sri3001
7 Replies
10. Shell Programming and Scripting
i need to be able to count the number of single quotes ' in the entire string below:
"description":"DevOps- Test VM's, System Admins Test VM's ",
awk can most likely do this, but here's my attempt using egrep:
echo "${STRING}" | egrep -wc '"'"\'"'"'
or
echo "${STRING}" | egrep -wc... (11 Replies)
Discussion started by: SkySmart
11 Replies
LEARN ABOUT V7
opannotate
OPANNOTATE(1) General Commands Manual OPANNOTATE(1)
NAME
opannotate - produce source or assembly annotated with profile data
SYNOPSIS
opannotate [ options ] [profile specification]
DESCRIPTION
opannotate outputs annotated source and/or assembly from profile data of an OProfile session. See oprofile(1) for how to write profile
specifications.
OPTIONS
--assembly / -a
Output annotated assembly. If this is combined with --source, then mixed source / assembly annotations are output.
--demangle / -D none|smart|normal
none: no demangling. normal: use default demangler (default) smart: use pattern-matching to make C++ symbol demangling more read-
able.
--exclude-dependent / -x
Do not include application-specific images for libraries, kernel modules and the kernel. This option only makes sense if the profile
session used --separate.
--exclude-file [files]
Exclude all files in the given comma-separated list of glob patterns.
--exclude-symbols / -e [symbols]
Exclude all the symbols in the given comma-separated list.
--help / -? / --usage
Show help message.
--image-path / -p [paths]
Comma-separated list of additional paths to search for binaries. This is needed to find modules in kernels 2.6 and upwards.
--root / -R [path]
A path to a filesystem to search for additional binaries.
--include-file [files]
Only include files in the given comma-separated list of glob patterns.
--include-symbols / -i [symbols]
Only include symbols in the given comma-separated list.
--objdump-params [params]
Pass the given parameters as extra values when calling objdump.
--output-dir / -o [dir]
Output directory. This makes opannotate output one annotated file for each source file. This option can't be used in conjunction
with --assembly.
--search-dirs / -d [paths]
Comma-separated list of paths to search for source files. You may need to use this option when the debug information for an image
contains relative paths.
--base-dirs / -b [paths]
Comma-separated list of paths to strip from debug source files, prior to looking for them in --search-dirs.
--session-dir=dir_path
Use sample database out of directory dir_path instead of the default location (/var/lib/oprofile).
--source / -s
Output annotated source. This requires debugging information to be available for the binaries.
--threshold / -t [percentage]
Only output data for symbols that have more than the given percentage of total samples.
--verbose / -V [options]
Give verbose debugging output.
--version / -v
Show version.
ENVIRONMENT
No special environment variables are recognised by opannotate.
FILES
/var/lib/oprofile/samples/
The location of the generated sample files.
VERSION
This man page is current for oprofile-0.9.6.
SEE ALSO
/usr/share/doc/oprofile/, oprofile(1)
4th Berkeley Distribution Tue 06 July 2010 OPANNOTATE(1)