2016-03-25 11 views
0

ich mit einem anderen Problem habe Schwierigkeiten, diesmal im Zusammenhang Ausgabe in eine Datei zu Umleitung (>). Ich habe ein paar Dateien namens foo-ab.in foo-abc.in foo-abcd.in bar-ab.in bar-abc.in bar-abcd.in und ich möchte jede Datei durchgehen, ein wenig ändern Teile es mit sed und schreibe dann die Ergebnisse in etwas wie foo-ab2.in, foo-abc2.in und foo-abcd2.in für jede Datei um. Was ich bisher habe, ist:sed Ausgang Eingabedatei geschrieben

for file in foo bar; do sed -n 's/text to change/replacement/ p' $file*.in> &1; done 

aber ich den Fehler:

-bash: syntax error near unexpected token `&' 

Ich verstehe, dass ich wahrscheinlich das tue alles falsch, aber ich möchte, dies erreichen:

for file in foo bar; do sed -n 's/text to change/replacement/ p' $file*.in > $file*2.in; done 

wo $file*2.in hat genau den gleichen Namen wie $file.in mit einer 2 in der Mitte angefügt, aber da gibt es mehrere foo mit entweder ab, abc oder abcd Endungen, Ich weiß nicht, wie ich das erreichen soll. Ich habe bereits meinen sed Befehl ausgearbeitet, es ist nur der richtige Dateiname zu ausgeben, der mich austrickst.

Antwort

0

offenbar eine Antwort ähnlich wie dies bereits existiert hier: wildcard input files

Aber aus Gründen der Klarheit und aus Gründen, die Frage der Schließung, die Antwort ist, den Befehl wie folgt zu ändern:

for file in foo*.in bar*.in; do sed -n 's/text to change/replacement p' $file > "${file%.*}"2.in; done 

jetzt es gibt Datei foo-ab.in durch die Datei foo-abcd.in, ändert sich der sed und gibt die Datei foo-ab2.in über foo-abcd2.in aus (und das Gleiche für bar * .in).