awk
может сделать это довольно просто:
$ cat file.txt
apple
president
example
another
$ awk '{output=""; for(i=1;i<length($0);i++){ output=output" "substr($0,i,2)} print output }' file.txt
ap pp pl le
pr re es si id de en nt
ex xa am mp pl le
an no ot th he er
Если пробелы, предшествующие строкам, являются проблемой, вы можете справиться с ней различными способами, например, проверить, является ли вывод пустым, перед добавлением пробела передподстрока или просто извлечение подстроки выходных данных после пробела, например,
$ awk '{output="";for(i=1;i<length($0);i++){ output=output" "substr($0,i,2)} print substr(output,2) }' file.txt
ap pp pl le
pr re es si id de en nt
ex xa am mp pl le
an no ot th he er
Все внутри блока { }
выполняется для каждой строки, так как к ней не прикреплено никаких условий.
output=""
сбрасывает выходную переменную в пустую для каждой строки.
for(i=1;i<length($0);i++){ ... }
циклически перебирает строку в каждой строке символ за символом.
output=output" "substr($0,i,2)} print output
- этовыполняется внутри вышеуказанного цикла. Для каждого символа строки выходной переменной присваивается ее существующее значение, пробел, затем двухсимвольная подстрока из текущего индекса - проход по каждому символу и печать его и следующего символа.