Это буквальное значение ^
. В этом случае он передается в egrep
, который принимает расширенные регулярные выражения, своего рода способ указания шаблона для сопоставления в данной строке (что-то вроде подстановки / подстановочных знаков, но гораздо более мощного). ^
просто означает «Это должно быть в начале строки / строки». Таким образом, в этом случае он будет соответствовать каждой строке в / etc / passwd, которая начинается с содержимого переменной «username».
(Обратите внимание, здесь есть потенциальная ошибка, потому что, если есть user rich и richard, ввод имени пользователя rich также будет соответствовать richard.)
sed -rn '
/typedef struct ([[:alnum:]_]+)\s+\{/!b
s//\1/; h
:X
n
/}\s+([[:alnum:]_]+)/{
s//\1/
H
g
s/;//g
s/(.*)\n(.*)\n(.*)\n(.*)\n(.*)/\1 \5: \2, \3, \4/
p;b
}
s/\s*(.+);\s*/\1/
H
bX
' file
newstruct HashNode: long id, uint32_t vtid, struct HN* next