Предполагая, что пробелы во входных данных являются пустыми символами в том виде, в каком они отображаются в образце входных данных, чтобы сделать то, что вы просили в своем вопросе, переносимо и надежно, это:
$ sed 's/ [^ ]*$//' file
2018.02.706 Customer App
2018.02.707 Customer App
и получить вывод командыстрока в ваш ответ будет выглядеть так:
$ sed 's/\(.*\) .*$/hg bookmarks --delete '\''\1'\''/' file
hg bookmarks --delete '2018.02.706 Customer App'
hg bookmarks --delete '2018.02.707 Customer App'
Если вы чувствуете жгучее желание использовать awk, тогда это будет:
$ awk '{sub(/ [^ ]+$/,"")}1' file
2018.02.706 Customer App
2018.02.707 Customer App
$ awk '{sub(/ [^ ]+$/,""); print "hg bookmarks --delete \047" $0 "\047"}' file
hg bookmarks --delete '2018.02.706 Customer App'
hg bookmarks --delete '2018.02.707 Customer App'
Заменить / [^ ]+$/
с /[[:space:]]+[^[:space:]]+$/
, если в вашем примере пробел может быть чем-то отличным от одного пустого символа.