awk не удаляет точки. Поскольку точка - это ваш разделитель, в этих строках больше нет точек. Что вы можете сделать, это добавить форматирование с помощью printf и напечатать точку между строками. Вам также нужно будет добавить \n
, чтобы поставить новые строки (неявные в печатном виде).
Также мне пришлось добавить условие if, чтобы учесть случаи, в которых есть только одно поле. Это не очень надежно, хотя, если у вас есть больше возможностей (вы не указываете), я могу помочь вам сделать его более общим и надежным.
grep 'lunar' names.txt | awk -F. '{if ($4!="") {printf("%s.%s\n",$3,$4)} else{ {printf("%s\n",$3)}}}' | sed 's/[\/$"]/''/g' |sort | uniq > file2.txt
Выход:
Hello
Mockingbird
hello.com
stolen Heart
Reggie.Ton