2009-07-07 7 views

Antwort

2

versuchen, etwas wie folgt aus:

\[youtube=(https?://[^\]]+)\]

+0

Dies hat den Trick gemacht. Danke, Andrew. – hitfactory

0

könnten Sie awk verwenden.

awk ' FS="[" {print $(NF) } ' file_with_text > temp.txt 
awk ' FS="]" {print $(NF-1)} ' temp.txt > results.txt 

Es ist in zwei Teilen, um es klarer zu machen, und weil awk so seltsam ist. Wenn Sie nur die URL und nicht den youtube = zuerst wollen, dann müssen Sie ein awk mit dem Dateitrennzeichen wie FS = "youtube =" ausführen. Auch awk kann mit der Eingabe seltsam sein; Wenn file_with_text Text in der ersten Zeile hat, kann es merkwürdig wirken und wenn die Datei mit dem von Ihnen gewählten Dateitrennzeichen endet, dann kann ein Fehler auftreten (fügen Sie am Ende der Datei einfach einen anderen Text als das FS-Symbol hinzu).

Edit: Entfernte die Cat-Funktion. Scheint weniger klar als pädagogische Antwort, aber es ist prägnanter.

+1

Eine weitere unnötige Verwendung von 'cat': anstelle von' cat FILE | awk PATTERN FILE ', benutze einfach 'awk PATTERN FILE'. –