Будет ли это работать?Я должен был сделать немного гимнастики с переменной IFS и немного для петель, но мне кажется, что это работает нормально.Если некоторые из «пустых» строк имеют начальные пробелы или символы табуляции, вам придется корректировать выражение sed как бы ...* test.sh
#!/bin/bash
filename=$1
OLD_IFS=$IFS
IFS=$'\n'
trap "rm -f $$.tmp" EXIT SIGHUP
for line in $(egrep -i "^void\ " $filename | sed -e 's/^void \w*(\(.*\));/\1/'); do
IFS=,
for s in $line; do
echo $s | awk '{print $1}' >> $$.tmp
done
IFS=$'\n'
done
IFS=$OLD_IFS
sort $$.tmp | uniq | tr "\n" " "
echo
exit 0
Результат:
$ ./test.sh test.txt
char float int string