2017-01-27 1 views
0

So versuche ich "deep_buffer" Quelle innerhalb bestimmter Senken, die übereinstimmen, wie "Hörmuschel" und "Wired Headset" zu entfernen. Wie würde ich das machen, wenn es einen Zeilenwechsel dazwischen gibt? Ich suche nach 2 Möglichkeiten. Erstens, die Ausschlüsse abgleichen und den Rest patchen und/oder einfach nur diejenigen patchen, die ich möchte, wie die oben erwähnten (aus dem Spiel). Ich benutze Posix Shell in Android.Sed entfernt Übereinstimmungen in 2+ Zeilen

Originalcode:

<routes> 
    <route type="mix" sink="Earpiece" 
      sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/> 
    <route type="mix" sink="Speaker" 
      sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/> 
    <route type="mix" sink="Wired Headset" 
      sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/> 
    <route type="mix" sink="Wired Headphones" 
      sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/> 
    <route type="mix" sink="Line" 
      sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/> 
    <route type="mix" sink="HDMI" 
      sources="primary output,raw,deep_buffer,multichannel,direct_pcm,compressed_offload"/> 
    <route type="mix" sink="Proxy" 
      sources="primary output,raw,deep_buffer,multichannel,direct_pcm,compressed_offload"/> 
    <route type="mix" sink="FM" 
      sources="primary output"/> 
    <route type="mix" sink="BT SCO All" 
      sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/> 
    <route type="mix" sink="Telephony Tx" 
      sources="voice_tx"/> 
    <route type="mix" sink="primary input" 
      sources="Wired Headset Mic,BT SCO Headset Mic,FM Tuner,Telephony Rx"/> 
    <route type="mix" sink="surround_sound" 
      sources="Built-In Mic,Built-In Back Mic"/> 
    <route type="mix" sink="record_24" 
      sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic"/> 
    <route type="mix" sink="voice_rx" 
      sources="Telephony Rx"/> 
</routes> 

erwartete Ausgabe angepasst Senken würde entfernen deep_buffer wie "verdrahteten Kopfhörer" und "Kabel-Headset" wie unten (aber nur die angepassten sind):

<routes> 
     <route type="mix" sink="Earpiece" 
       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/> 
     <route type="mix" sink="Speaker" 
       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/> 
     <route type="mix" sink="Wired Headset" 
       sources="primary output,raw,direct_pcm,compressed_offload,voip_rx"/> 
     <route type="mix" sink="Wired Headphones" 
       sources="primary output,raw,direct_pcm,compressed_offload,voip_rx"/> 
     <route type="mix" sink="Line" 
       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/> 
     <route type="mix" sink="HDMI" 
       sources="primary output,raw,deep_buffer,multichannel,direct_pcm,compressed_offload"/> 
     <route type="mix" sink="Proxy" 
       sources="primary output,raw,deep_buffer,multichannel,direct_pcm,compressed_offload"/> 
     <route type="mix" sink="FM" 
       sources="primary output"/> 
     <route type="mix" sink="BT SCO All" 
       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/> 
     <route type="mix" sink="Telephony Tx" 
       sources="voice_tx"/> 
     <route type="mix" sink="primary input" 
       sources="Wired Headset Mic,BT SCO Headset Mic,FM Tuner,Telephony Rx"/> 
     <route type="mix" sink="surround_sound" 
       sources="Built-In Mic,Built-In Back Mic"/> 
     <route type="mix" sink="record_24" 
       sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic"/> 
     <route type="mix" sink="voice_rx" 
       sources="Telephony Rx"/> 
    </routes> 
+0

Was ist Ihre erwartete Ausgabe/ – Inian

+0

Aktualisierte ursprüngliche Frage. –

Antwort

1

I Ich bin mir nicht sicher, ob dies das ist, was Sie wollten, aber hier ist ein schnell und schmutzig Perl-Programm, das die Zeichenfolge "Deep-Buffer" nur von den Zeilen nach denen mit den Strings "Hörmuschel" und "Wired Headset" entfernt. Ich habe versucht, es so zu schreiben, dass die Logik einfach zu folgen ist.

#!/usr/bin/perl 

$flag = "0"; 
while (<>) { 
    if ($flag eq "1") 
    { 
     s/deep_buffer,//g; 
     $flag = "0"; 
    } 
    elsif (/"Earpiece"/ || /"Wired Headset"/) 
    { 
     $flag = "1"; 
    } 
    print; 
} 
exit; 
Verwandte Themen