ich eine Datei bekam, die eine Zeile in der Datei wie folgt hat:Verschieben Linie (n) eine weitere Zeile in einer Datei folgen
check=('78905905f5a4ed82160c327f3fd34cba')
ich in der Lage sein möchten, diese Linie zu bewegen, ein folgen Linie, die wie folgt aussieht:
files=('somefile.txt')
Das Array zwar zu Zeiten, die mehrere Zeilen, zum Beispiel umfassen kann:
files=('somefile.txt'
'file2.png'
'another.txt'
'andanother...')
text
in between
check=('78905905f5a4ed82160c327f3fd34cba'
'5277a9164001a4276837b59dade26af2'
'3f8b60b6fbb993c18442b62ea661aa6b')
Die Anordnung/Leitung alway s endet in a) und kein Text dazwischen enthält eine geschlossene Klammer.
Ich habe ein paar Ratschläge, die dies tun awk kann:
awk '/files/{
f=0
print $0
for(i=1;i<=d;i++){ print a[i] }
g=0
delete a # remove array after found
next
}
/check/{ f=1; g=1 }
f{ a[++d]=$0 }
!g' file
Dies wird nur wenn eine Zeile erstrecken. Ich wurde aufgefordert, die Suche zu erweitern:
Nur lernen awk, so würde ich die Hilfe mit diesem schätzen. Oder wenn es ein anderes Werkzeug gibt, das das kann, würde ich gerne davon erfahren. Jemand hat mir gesagt, dass diese Arten von Fähigkeiten "ediert" werden.
Aha, Notwendigkeit Linien auf und ab bewegen, oder? Ich habe die Antwort unten überarbeitet ... – DigitalRoss