Не совсем понятно, каковы критерии объединения двух линий. Тем не менее, это, вероятно, поможет добиться успеха с указанными данными:
sed -e '/|shan$/N;s/|shan\nkar|/|shankar|/' test.dat
Протестировано с sed
на MacOS X 10.6.6.
Если критерий «если строка не заканчивается трубой, соедините ее следующей строкой», то это работает:
sed -e '/[^|]$/{N;s/\n//;}' test.dat
Поиск говорит «если строка не заканчивается трубой»; '{' запускает группу операций; N объединяет следующую строку с новой строкой между ними; s/\n//
удаляет перевод строки; '}' завершает группу операций.