Usando o awk
awk '{printf "%s%s",(NR>1?",":""),$NF;} END{print""}' /proc/filesystems
Usando sed
sed -r 's/^nodev//; s/^[[:blank:]]*//; H;1h;$!d;x; s/\n/,/g' /proc/filesystems
Como funciona
-
s/^nodev//
Isso elimina
nodev
do início de qualquer linha -
s/^[[:blank:]]*//
Isso elimina o espaço em branco principal de cada linha.
-
H
Isso acrescenta a linha atual ao espaço de espera.
-
1h
Se estivermos na primeira linha, sobrescreva o espaço de espera com essa linha.
-
$!d
Se não estivermos na última linha, exclua o espaço do padrão e comece novamente na próxima linha.
-
x; s/\n/,/g
Se chegarmos aqui, somos a última linha. Nesse caso, mova o espaço de suspensão para o espaço de padrão e substitua todas as novas linhas por vírgulas.
Para entender isso, é útil reconhecer H;1h;$!d;x
como um idioma do awk, o que significa ler em todo o arquivo.
Extra: classificação
Para classificar os nomes:
awk '{print $NF;}' /proc/filesystems | sort | awk '{printf "%s%s",(NR>1?",":""),$NF;} END{print""}'