Coloque os canais no final da linha com os comentários depois:
$ 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
Este arquivo de script BASH de comando único é difícil de entender, portanto, quero escrever um comentário para cada uma das ações:
echo 'foo' \
| sed 's/d/a/' \
| sed 's/e/b/' \
| sed 's/f/c/' \
> myfile
(sed é apenas um exemplo, na verdade é uma mistura de greps, trs e awks)
Eu odiaria ter que duplicar linhas ou ter cada comentário longe da linha a que se aplica.
Mas, ao mesmo tempo, o BASH não parece permitir comentários "in-line".
Alguma maneira elegante de resolver este problema?
Se você tiver alguma dúvida sobre essa questão, ao comentar um comando non -pipeline multiline:
$ 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'
A menos que você esteja fazendo algo realmente perverso como a automação de comentários, não vejo um motivo para preferir isso à resposta de Mikel para um pipe, mas se você realmente quisesse:
$ 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'
ou:
$ 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'
Fonte: link
Bem, eu prefiro assim,
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/'
}