Я прочитал, что оригинальный ответ на самом деле не то, что вы ищете. Пожалуйста, ознакомьтесь со следующим сценарием. Это работает только тогда, когда вы заранее знаете количество элементов входного файла:
#!/bin/bash
infile=/home/wokie/duck.txt
outfile=/home/wokie/duck2.txt
# Define the amount of elements/columns in a row
maxelem=28
# Read the file, strip all newline characters and create one big variable
inputOneline=$(cat $infile | dos2unix | tr -d '\n')
count=0
# Read through the variable and split elements
for element in ${inputOneline//|/ }
do
if [ $count -lt $maxelem ]
then
# Write element to outfile while suppresing newline (-n)
echo -n "$element|" >> $outfile
count=$[$count +1]
else
# Write newline to outfile when maximum elements is reached
echo >> $outfile
count=0
fi
done
Вся идея состоит в том, чтобы сначала удалить все новые строки, после этого новый файл будет собран вместе с новыми строками в нужных местах.
Скрипт использует отличный инструмент под названием dos2unix. Запустив dos2unix только с именем файла в качестве параметра, он автоматически преобразует входной файл (Windows) в формат unix.
Если запустить инструмент с параметром -id, подсчитывается количество случаев CRLF, например:
[test@testsystem ~]$ dos2unix -id /home/wokie/test2.txt
5 /home/wokie/test2.txt
В файле примера 5 случаев.
Вы можете найти инструмент dos2unix здесь: https://sourceforge.net/projects/dos2unix/. Большинство дистрибутивов предоставляют dos2unix в стандартной комплектации или предоставляют возможность установки с помощью apt-get или dnf.
Исходный файл C не может быть исполняемым. Иногда это может произойти, если файл был перенесен из операционной системы, отличной от Unix, или через нее.
Вы можете безопасно удалить бит выполнения, если хотите:
$ chmod a-x secp256k1.c