Проблема в том, что ваша команда sed сначала считывает весь файл в память:
:a # label a
N # add next line to pattern space
$!ba # if not on last line ($!) branch to label a
Это в конечном итоге приведет к ошибке при достаточно большом вводе, потому что пространство шаблона хранится в основной памяти.
Учитывая простую замену, которая вам нужна, достаточно выполнить замену на пары линий, например:
:a # label a
N # add next line to pattern space
s/\n|/|/ # substitute new-line pipe by pipe
ta # if last substitution was successful branch to label a
P # print first line of pattern space
D # delete first line of pattern space
В качестве однострочного:
sed -n ':a; N; s/\n|/|/; ta; P; D' File.txt