Setzen Sie die Rohre am Ende der Zeile mit den folgenden Kommentaren:
$ echo 'foo' | sed 's/f/a/' | # change first f to a sed 's/o/b/' | # change first o to b sed 's/o/c/' # change second o to c abc
Diese BASH-Skriptdatei mit einem einzigen Befehl ist schwer zu verstehen. Daher möchte ich für jede Aktion einen Kommentar schreiben:
echo 'foo' \ | sed 's/d/a/' \ | sed 's/e/b/' \ | sed 's/f/c/' \ > myfile
(sed ist nur ein beispiel, eigentlich ist es eine mischung aus greps und trs und awks)
Ich würde es hassen, Zeilen duplizieren zu müssen oder jeden Kommentar weit weg von der Zeile zu haben, für die er gilt.
Gleichzeitig scheint BASH jedoch keine "Inline" -Kommentare zuzulassen.
Irgendwelche eleganten Wege, um dieses Problem zu lösen?
Setzen Sie die Rohre am Ende der Zeile mit den folgenden Kommentaren:
$ echo 'foo' | sed 's/f/a/' | # change first f to a sed 's/o/b/' | # change first o to b sed 's/o/c/' # change second o to c abc
Wenn Sie auf diese Frage stoßen und einen mehrzeiligen Befehl außerhalb der Pipeline kommentieren möchten:
$ echo 'foo' | sed -e 's/f/a/' `: # change first f to a` \ -e 's/o/b/' `: # change first o to b` \ -e 's/o/c/' `: # change second o to c`
Wenn Sie nicht etwas wirklich Perverses wie das Automatisieren von Kommentaren machen, kann ich keinen Grund dafür finden, dass dies der Antwort von Mikel für eine Pipe vorgezogen wird, aber wenn Sie wirklich wollten:
$ echo 'foo' | sed 's/f/a/' | `: # change first f to a` \ sed 's/o/b/' | `: # change first o to b` \ sed 's/o/c/' `: # change second o to c`
oder:
$ echo 'foo' | sed 's/f/a/' `: # change first f to a` | sed 's/o/b/' `: # change first o to b` | sed 's/o/c/' `: # change second o to c`
Quelle: http://unix.derkeiler.com/Newsgroups/comp.unix.solaris/2005-07/0991.html
Nun, ich bevorzuge diesen Weg
echo 'foo' | { # change first f to a # you can add more lines of comment on the command options sed 's/f/a/' } | { # change first o to b sed 's/o/b/' } | { # change second o to c sed 's/o/c/' }