




Я бы сопоставил первое слово [^ ]*, а затем добавил к нему префикс и суффикс &:
$ sed 's/[^ ]*/path: *&*/' input.txt
path: */Application/Lockscreen/* @smiths
path: */Application/BlueLock/* @egoists
Или, если это имеет больше смысла в вашем контексте, замените пробел на '* ' и начало ^ на 'path: ' (порядок имеет значение):
$ sed 's/ /* /; s/^/path: */' input.txt
path: */Application/Lockscreen/* @smiths
path: */Application/BlueLock/* @egoists
Является ли \0 недокументированным псевдонимом &?
@BenjaminW. Это обратная ссылка на то, что было сопоставлено, я не осознавал, что это недокументированное поведение, поэтому я исправлю использование & вместо этого. ТИЛ, не знал & :-)
Я бы сделал это, используя любой sed, чтобы он работал, даже если строка в середине содержит пробелы или @:
$ sed 's/\(.*\)\( @[^@]*\)/path: *\1*\2/' file
path: */Application/Lockscreen/* @smiths
path: */Application/BlueLock/* @egoists
$ echo '/Application/Foo @Bar/ @whatever' | sed 's/\(.*\)\( @[^@]*\)/path: *\1*\2/'
path: */Application/Foo @Bar/* @whatever
Он просто опирается на строку в конце, не содержащую несколько @.
Как насчет
awk? Предполагая, что столбцы разделены пробелами:awk '{print "path: *" $1 "*", $2}'