Опубликованный (и принятый в настоящее время) ответ grep
имеет ряд проблем, не последней из которых является любая строка, которая содержит последовательность .h
будет напечатана, а не только те, которые совпадают в регулярном выражении в сценарии Awk (например, из ссылки на член структуры, такой как connectedlist.head
). Я бы использовал для этого sed
:
sed -n 's/^"\(.*h\)"$/\1/p "$file" >> Makefile
У меня есть сильное подозрение, что OP не на самом деле хочет сопоставить любую строку, которая заканчивается буквой h
в двойных кавычках, что и делает это регулярное выражение. Возможно, более разумным предположением было бы что-то вроде
sed -n 's/^ *# *include *"\([^"]*\.h\)".*$/\1/p < "$file" >> Makefile
#include
с необязательным пробелом, прежде чем оно станет обоснованным. Суть здесь - регулярное выражение [^ "] * \. H
, которое захватывает строку, не содержащую двойных кавычек и оканчивающуюся буквенными символами .h
.
Какую конфигурацию IP-сети вы используете внутри VMware-Player?
У вас действительно и хост (под управлением Windows), и виртуальная машина (внутри VMware Player) имеют индивидуальный IP-адрес в одной и той же IP-сети?
Возможно, добавим еще несколько деталей. (ifconfig в Linux, ipconfig в Windows)