44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Awk
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Awk
		
	
	
	
	
	
|   | #!/usr/bin/awk -f | ||
|  | 
 | ||
|  | #------------------------------------------------------------------------------- | ||
|  | # Process tab-delimited data from the Internet Archive with a field name | ||
|  | # header, reporting particular fields. The algorithm is general though this | ||
|  | # instance is specific. | ||
|  | # | ||
|  | # In this case we extract only the audio files | ||
|  | # | ||
|  | # This script is meant to be used thus: | ||
|  | #       $ ia list -va hpr2450 | ./parse_ia_audio.awk | ||
|  | #       hpr2450.flac derivative | ||
|  | #       hpr2450.mp3  derivative | ||
|  | #       hpr2450.ogg  derivative | ||
|  | #       hpr2450.opus original | ||
|  | #       hpr2450.spx  original | ||
|  | #       hpr2450.wav  original | ||
|  | # | ||
|  | #------------------------------------------------------------------------------- | ||
|  | 
 | ||
|  | BEGIN { | ||
|  |     FS = "\t" | ||
|  | } | ||
|  | 
 | ||
|  | # | ||
|  | # Read the header line and collect the fields into an array such that a search | ||
|  | # by field name returns the field number. | ||
|  | # | ||
|  | NR == 1 { | ||
|  |     for (i = 1; i <= NF; i++) { | ||
|  |         fld[$i] = i | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | # | ||
|  | # Read the rest of the data, reporting only the lines relating to audio files | ||
|  | # and print the fields 'name' and 'source' | ||
|  | # | ||
|  | NR > 1 && $(fld["name"]) ~ /[^.]\.(flac|mp3|ogg|opus|spx|wav)/ { | ||
|  |     printf "%-15s %s\n",$(fld["name"]),$(fld["source"]) | ||
|  | } | ||
|  | 
 | ||
|  | # vim: syntax=awk:ts=8:sw=4:ai:et:tw=78:nu:rnu: |