Надеюсь, что следующее задание будет очень простым для любителей sed
.Я не sed
-гуру, но мне нужно выразить следующую задачу в sed
, так как sed
более популярен в системах Linux.
Поток входного текста - это то, что создается "make зависимость "и выглядит следующим образом:
pgm2asc.o: pgm2asc.c ../include/config.h amiga.h list.h pgm2asc.h pnm.h \
output.h gocr.h unicode.h ocr1.h ocr0.h otsu.h barcode.h progress.h
box.o: box.c gocr.h pnm.h ../include/config.h unicode.h list.h pgm2asc.h \
output.h
database.o: database.c gocr.h pnm.h ../include/config.h unicode.h list.h \
pgm2asc.h output.h
detect.o: detect.c pgm2asc.h pnm.h ../include/config.h output.h gocr.h \
unicode.h list.h
Мне нужно отлавливать только заголовочные файлы C ++ (т.е. заканчивающиеся на .h
), сделать список уникальным и распечатать как разделенный пробелами список, добавив src/
префикс пути.Это достигается с помощью следующего сценария Perl:
make libs-depends | perl -e 'while (<>) { while (/ ([\w\.\/]+?\.h)/g) { $a{$1} = 1; } } print join " ", map { "src/$_" } keys %a;'
Вывод:
src/unicode.h src/pnm.h src/progress.h src/amiga.h src/ocr0.h src/ocr1.h src/otsu.h src/barcode.h src/gocr.h src/../include/config.h src/list.h src/pgm2asc.h src/output.h
Пожалуйста, помогите выразить это в sed
.