Want to parse output for variables in Bash


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Want to parse output for variables in Bash
# 1  
Old 05-03-2010
Want to parse output for variables in Bash

Trying to finish up my script that automates some video encoding work.

Situation: There is an MKV file to be transcoded.

Problem: MKVINFO will give a bunch of output about an MKV file, included in that output are two lines I am interested in:

Code:
|  + Default duration: 41.708ms (23.976 fps for a video track)
|   + Pixel width: 1280

Is there some way of echoing the output of from MKVINFO, and parsing down the two bits of information that I am looking for: fps (23.976) and pixel width (1280). I get the impression that this is doable, but I have only learned what little Bash I know from googling for examples, but I haven't found something similar to this in my looking.

Thanks, appreciate any help.

I'm on Mac OS X Snow Leopard 10.6.3. the command to run with mkvinfo is simply:
Code:
$ mkvinfo mkvfile.mkv

ballpark figure of about 100 lines of output from this command.

Last edited by Franklin52; 05-03-2010 at 03:39 AM.. Reason: Please use code tags.
# 2  
Old 05-03-2010
Try this:
Code:
mkvinfo mkvfile.mkv | 
awk '
/ Default duration:/ {sub(".*\(","");print $0 + 0}
/ Pixel width:/{print $NF}'

# 3  
Old 05-03-2010
I tried that code exactly as shown above, and also as a 1 liner, but both times got this output:

Code:
awk: illegal primary in regular expression .*( at 
 source line number 2
 context is
	/ Default duration:/ >>>  {sub(".*\(","") <<<

# 4  
Old 05-03-2010
Quote:
Originally Posted by randyharris
I tried that code exactly as shown above, and also as a 1 liner, but both times got this output:

Code:
awk: illegal primary in regular expression .*( at 
 source line number 2
 context is
	/ Default duration:/ >>>  {sub(".*\(","") <<<

Try nawk or /usr/xpg4/bin/awk on Solaris.

Regards
# 5  
Old 05-03-2010
Or,

Code:
/home->awk -F "[ (]" '/Default duration:/ { print $(NF-5)} /Pixel width:/ {print $NF}' f
23.976
1280
/home->

working for me.
# 6  
Old 05-03-2010
Quote:
Originally Posted by anchal_khare
Or,

Code:
/home->awk -F "[ (]" '/Default duration:/ { print $(NF-5)} /Pixel width:/ {print $NF}' f
23.976
1280
/home->

working for me.
Is that trailing 'f' a typo?

Thanks.
# 7  
Old 05-03-2010
that is filename.

you use in the same way:

Code:
mkvinfo mkvfile.mkv | awk -F "[ (]" '/Default duration:/ { print $(NF-5)} /Pixel width:/ {print $NF}'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Passing awk variables to bash variables

Trying to do so echo "111:222:333" |awk -F: '{system("export TESTO=" $2)}'But it doesn't work (2 Replies)
Discussion started by: urello
2 Replies

2. Shell Programming and Scripting

Parse variables from C++ to shell

Hi All, #include <iostream> int main() { std::int foo = 34; system("mkdir /home/linuxUser/fooDir"); system("vi fooFile") system("write foo in fooFile") foo = 43; foo = read foo from fooFile; std::cout << "foo = " << foo ; } result should be foo = 34 can... (3 Replies)
Discussion started by: linuxUser_
3 Replies

3. Linux

Parse ; deliminated variable to create variables

Hi there, would appreciate some help on this parsing problem if anybody can help im trying to parse a variable with the following output, each of the values im trying to parse are deliminated by a ; T192... (8 Replies)
Discussion started by: scottish_jason
8 Replies

4. Shell Programming and Scripting

parse output line using bash

hi, i have the followiing scenario where by i am parsing teh following output using cut -d like so #!/bin/bash output="ABCTable| ------------------| | ------------------| code | name | amount |" col1= $output | cut -d'|' -f5 col2= $output | cut -d'|'... (1 Reply)
Discussion started by: nano2
1 Replies

5. Shell Programming and Scripting

Need to parse lines in a file into two words and assign the values to two variables

For example, I have a file with below lines containing VOB tags and VOB paths. * /vobs/fts/FTSUSM20_VOB /ccvobsslx01/projects/vobs/eml/FTSUSM20_VOB * /vobs/fts/FTS20_VOB /ccvobsslx01/projects/vobs/eml/FTS20_VOB * /vobs/pmv/PMS_VOB /ccvobsslx01/projects/vobs/cpm/_/PMS_VOB *... (4 Replies)
Discussion started by: senthilkc
4 Replies

6. UNIX for Dummies Questions & Answers

Parse or cut concat variables to individual values

Hello I need to pass some environment parameters to a datastage job and am getting an error when trying to send the complete concatinated variable. I have decided to parse out just the values and send as parameters but am struggling to find the best way to do this (actually I am not very... (3 Replies)
Discussion started by: LynnC
3 Replies

7. Shell Programming and Scripting

Parse config file and store the values in variables

Hi, I have a config file that has blank, commented lines. I need to escape commented lines, blank lines, parse the remaining lines and store them in variables or array. the config file contains the following lines. # config file # Define Oracle User ORA_USER=abcde ORA_PASS=xyzabc... (8 Replies)
Discussion started by: Lakshmi Chowdam
8 Replies

8. Shell Programming and Scripting

How to parse a string into variables

I'm working in korn shell and have a variable which contains a string like: aa_yyyymmdd_bbb_ccc_ddd.abc. I want to treat the _ and . as delimiters and parse the string so I end up with 6 values in variables that I can manipulate. My original plan was to use var1=`echo $sting1 | cut -c1-c2` but... (9 Replies)
Discussion started by: aquimby
9 Replies

9. Shell Programming and Scripting

How to: Parse text string into variables using Korn shell

I am writing a script to keep check on free disk space, and I would like to find a way to parse $LINE (see code below) into a numeric value (for free disk space percentage) and a string value (for mount point). If possible, I would like to avoid sed or any additional use of awk since I am not very... (7 Replies)
Discussion started by: shew01
7 Replies

10. Shell Programming and Scripting

How can I parse a record found in /etc/passwd into variables?

I am working with the Oracle 10.2.0.3 job scheduler on Solaris 10, and unfortunately, the scheduler executes scripts in such a way that several default shell environment variables are not defined. For example, $HOME, $USER, and $LOGNAME are missing. How can I parse the appropriate record in... (7 Replies)
Discussion started by: shew01
7 Replies
Login or Register to Ask a Question