38 lines
		
	
	
		
			847 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			847 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
set -e
 | 
						|
 | 
						|
argv1=$1
 | 
						|
argv2=$2
 | 
						|
 | 
						|
# check usage
 | 
						|
if ! test -n "$argv1"; then
 | 
						|
	printf "Usage: %s [TABLE.KEY[INDEX]] [FILE]\n" "$0" 1>&2
 | 
						|
	exit 64 # sysexits(3) EX_USAGE
 | 
						|
fi
 | 
						|
 | 
						|
set -- $(printf "%s\n" "$argv1" | cut -d "." --output-delimiter=" " -f 1-)
 | 
						|
 | 
						|
ARR=$(printf "%s\n" "$2" | sed -n 's/.\+\[//p' | tr -d ']')
 | 
						|
 | 
						|
ARG=$(printf "%s\n" "$2" | sed 's/\[.*\]//g')
 | 
						|
 | 
						|
VAL=$(if test -e "$argv2"; then
 | 
						|
        argv2=$(sed 's/[^"#]#\+.*//g' <"$argv2")
 | 
						|
			else
 | 
						|
				argv2=$(printf "%s\n" "$argv2" | sed 's/[^"#]#\+.*//g')
 | 
						|
      fi
 | 
						|
			printf "%s\n" "$argv2" |\
 | 
						|
				awk "/^\[$1\]/{flag=1; next} /^\[/{flag=0} flag" - |\
 | 
						|
				sed -n "s/$ARG *= *//p" | sed 's/", "/","/g' | tr -d '[]' |\
 | 
						|
				sed 's/^ //g')
 | 
						|
 | 
						|
if test -n "$ARR"; then
 | 
						|
	printf "%s\n" "$VAL" | sed 's/,"/\n"/g' | tr -d '"' | head -n "$ARR" |\
 | 
						|
		tail -n 1
 | 
						|
else
 | 
						|
	printf "%s\n" "$VAL" | tr -d '"'
 | 
						|
fi
 | 
						|
 | 
						|
exit 0
 |