1

シェルスクリプトを使用して、次のGSTコマンドを2つに分割したいと思います。

/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z0KAHukBQHpCAAAH0AAB1MAI\\,aM48gA\\=\\=\", payload=(int)96, ssrc=(uint)2416890621, clock-base=(uint)518578781, seqnum-base=(uint)24075

分割はcapsで発生する必要があります=2つの新しい行は2つの変数$var1と$var2に格納する必要があります

$var1には次のものが含まれている必要があります /GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink:

また、$var2には次のものが含まれている必要があります application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z0KAHukBQHpCAAAH0AAB1MAI\\,aM48gA\\=\\=\", payload=(int)96, ssrc=(uint)2416890621, clock-base=(uint)518578781, seqnum-base=(uint)24075

入力文字列には2つの円記号があることに注意してください。したがって、エコーを実行すると、バックスラッシュが1つだけ与えられます。

4

2 に答える 2

1

シェルパラメータ拡張を使用します:

$ cmd='/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z0KAHukBQHpCAAAH0AAB1MAI\\,aM48gA\\=\\=\", payload=(int)96, ssrc=(uint)2416890621, clock-base=(uint)518578781, seqnum-base=(uint)24075'

$ first=${cmd% caps = *}; echo ">>$first<<"
>>/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink:<<

$ second=${cmd#* caps = }; echo ">>$second<<"
>>application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z0KAHukBQHpCAAAH0AAB1MAI\\,aM48gA\\=\\=\", payload=(int)96, ssrc=(uint)2416890621, clock-base=(uint)518578781, seqnum-base=(uint)24075<<
于 2013-02-10T12:19:00.000 に答える
1
a="/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z0KAHukBQHpCAAAH0AAB1MAI\\,aM48gA\\=\\=\", payload=(int)96, ssrc=(uint)2416890621, clock-base=(uint)518578781, seqnum-base=(uint)24075"

文字列をスペースで切ることができます。

var1=`echo $a | cut -d' ' -f1` 

$var1 = /GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink:

var2=`echo $a | cut -d' ' -f4-` 

$var2 = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z0KAHukBQHpCAAAH0AAB1MAI\\,aM48gA\\=\\=\", payload=(int)96, ssrc=(uint)2416890621, clock-base=(uint)518578781, seqnum-base=(uint)24075
于 2013-02-10T11:55:14.187 に答える