Visit Our UNIX and Linux User Community

Top Forums Shell Programming and Scripting Retrieving a list of functions and reduce results Post 303046104 by sea on Thursday 23rd of April 2020 10:34:58 PM
Old 04-23-2020
Retrieving a list of functions and reduce results


My core question is how to reduce the required time and diskusage (if/where possible) on the reduce-the-list issue.
		# Get full list of all functions
		local list_raw="$( )
		# Remove swarm.{sanity,eu] and init.* functions, as they are for internal use only
		local list=$( 
	for l in $list_raw;do 
		$ECHO "${l}" | $GREP -q 'swarm.sanity' || \
			$ECHO "${l}" | $GREP -q '' || \
			$ECHO "${l}" | $GREP -q 'init.' 
	)  || $PRINTF "$l "
done ; )

/* The search pattern inside the function is ^[:space:]funcname() { # comments. */

Code: { # [FILE]
	# Prints a list of properly declared functions
	# see ./docs/{MANUAL,SYNTAX}.md for details
		swarm.protect "$FUNCNAME" "${@}" && exit 1
		local tmp_oldpwd="${PWD:-$($PWD_EXEC)}"
		local tmp_file="${1##*/}"
		local tmp_dir=${1/$tmp_file}
		local target="${tmp_dir:-$SWARM_DIR_LIBS}/$tmp_file"

		if [[ -n "$tmp_file" ]] && [[ -f "$target" ]]
		then	# There is a specific file passed to parse
			cd "${tmp_dir:-$SWARM_DIR_LIBS}"
			$GREP "() { #" "$1"| \
				$GREP -v GREP | \
				$AWK -v FS='() ' '{print $1}' | \
				$SED s,'()',' ',g
			cd "$tmp_oldpwd"
		else	# Just parse all files in SWARM_DIR_LIBS ; default
			raw_output() {
					cd "$SWARM_DIR_LIBS"
					$GREP init.*"() {" * | $GREP -v GREP
					$GREP cfg.*"() {" * | $GREP -v GREP
					# Yes, I could remove these functions here, but I'd like to keep my options
					# for a possible 'internal' section for the help menu
					$GREP swarm.*"() {" * | $GREP -v GREP | $GREP -v '.os.' #| $GREP -v sanity | $GREP -v '\.eu\.'
					cd "$tmp_oldpwd"
				) | while IFS=": " read _ funcname _
					# The IFS takes care of the GREP filenames
					# and this variable-regex takes care of the 'function definition'
					$PRINTF '%s\n' "${funcname/()}"
			# Show data
			raw_output | sort -u
			unset -f raw_output

EDIT X'th:
Some code fixes, as I did post the code too early as is - while it was in modification.
And while I completed this, I forgot that I wanted to support multiple dirs (SWARM_DIR_LIBS , SWARM_USER_DIR_LIBS) so it could be used for private scripts as well.
And now alot more ideas come up, and I need to go to bed...

Stay healthy and thank you in advance for any suggestions

Moderator's Comments:
Mod Comment Deleted PHP highlighting tags for shell script. Please do not do abuse the BBCODE tags.

Last edited by sea; 04-24-2020 at 01:28 AM..
Test Your Knowledge in Computers #319
Difficulty: Medium
The open source program Redis is a relational database server.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

List grep results

Hi I need to search for matching strings in a database and I want to print out all files that matches in "detail", which means that I want the output to contain datum of last saving. I only get the grep function tp print the actual file names which is not enough since the database is to large... (14 Replies)
Discussion started by: slire
14 Replies

2. Solaris

OS functions for process list

I'm currently fixing a bug in a C program in which I need to check to make sure another specific application is up and running before continuing. Are there any SunOS API functions that can provide me with a list of currently running processes on the system? I'd like to avoid using 'ps' with a... (1 Reply)
Discussion started by: jalburger
1 Replies

3. Shell Programming and Scripting

filtering list results

I created a large file list using: find . -type f -mtime +540 > test2.txt ..which searched recursively down the directory tree searching for any file older than 540 days. I would like to filter the results removing the directory name and the "/" character, resulting in only a list of the... (3 Replies)
Discussion started by: fxvisions
3 Replies

4. AIX

Is there a way to list all the functions dotted in to the env?

Hi People, Please advise if there is a command to retrieve the list of functions (user-defined) available at any certain point? Cheers (1 Reply)
Discussion started by: easwam
1 Replies

5. Shell Programming and Scripting

Get the List of functions with modified parameters

Hi I have 2 files a.c and a.bak where I changed long to int using awk script. I want to get the list of functions whose parameters got modified for eg: fun ( long a, long b ) might be changed to fun ( int a, int b ) (1 Reply)
Discussion started by: Sivaswami
1 Replies

6. Programming

retrieving network interface list

Hello I have a problem with retreiving network interface list using IOCTLs. I have 4 interfaces: $ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet scope host lo inet6 ::1/128 scope... (1 Reply)
Discussion started by: xyzt
1 Replies

7. Shell Programming and Scripting

Help in retrieving the ending line numbers of the functions

Hi! I've a C file which consist of many function definitions with numbers at the beginning as shown below.. 10 void search() 11 { 12 /*body 14 * 15 * 17 * 18 * 40 * 42 * 60 } 90 void func_name() 95 { 99 /*body 100 * 105 * 111 * (7 Replies)
Discussion started by: abk07
7 Replies

8. Emergency UNIX and Linux Support

Retrieving a list of "orphan" ids

I have a situation where I would like to retrieve a list of ids on AIX 5.3 server, which do not have proper gecos information. The need is to fix all of these ids before it gets flagged as an audit exposure. Can someone please help me with a command/script to retrieve this list? G (3 Replies)
Discussion started by: ggayathri
3 Replies

9. Shell Programming and Scripting

Outputting Results to Indexed List

I'm looking for some suggestions on a command line utility I am making. I would like to use 'find' to locate some files and index the results so the user can choose the correct results from the list and push that input into an open command. A simple example below: ... (2 Replies)
Discussion started by: sudo
2 Replies

10. Programming

Code review: recursion in circular array, reduce two functions to one?

Hello, I think there's an easier way to do this but can't seem to recall but given an array of animals and an initial value is a random index in the array, here it's 3. 3,4,5,4,3,2,1,0,1,2,3,4,5,4,3,2,1,0... inifinite repeat a quick brute force solution i came up with was two functions, i... (6 Replies)
Discussion started by: f77hack
6 Replies

Featured Tech Videos

All times are GMT -4. The time now is 12:42 AM.
Unix & Linux Forums Content Copyright 1993-2020. All Rights Reserved.
Privacy Policy