Ich versuche, eine Shell-Skript zu verstehen, die den Befehl unten verwendet:sed Befehl mit Dollar
sed '$d;1,2 d;s/^ //' $file1 > $file2
I s/^ //
gemustert wird die Leerzeilen zu befreien, kann aber nicht erkennen, was die $d;1,2 d;
tut. Kann mir bitte jemand erklären?
Streng genommen eliminiert der 's/^ //' Teil ein führendes Leerzeichen aus jeder Zeile, das mit einem Leerzeichen beginnt. Das ist nicht das Gleiche wie das Löschen von Leerzeilen. Das würde mit '/^[[: blank:]] * $/d' oder einem äquivalenten Befehl geschehen. –
Im Zweifel, und es gibt keine Zeit zu fragen, manchmal hilft es, einige bekannte Daten durch Mystery-Code zu laufen, nur um zu sehen, was passiert. Piping in einer Liste von Zahlen, wie 'seq 10 | sed '$ d; 1,2 d''hätte da geholfen, der Output wäre * 3 * bis * 9 *. – agc
Mögliches Duplikat von [wie man Dollarzeichen ($) in sed-Skriptprogrammierung versteht?] (Http://stackoverflow.com/questions/29224326/how-to-understand-dollar-sign-in-sed-script-programming) –