Я ввел список чисел в Calc и сохранил его как CSV, чтобы все значения в одной строке разделялись запятыми. Я опишу то, что я ищу с bash в следующем примере:
INPUT
22,33
45,533
OUTPUT
22:33,45:533
Решение без внешних двоичных файлов - но более медленное (читает строку за строкой и меняет ', ' → ': ')
while read -u 3 -r line; do
echo -n "${line/,/:}," >> new_file
done 3< old_file
Не уверен, правильно ли я понимаю, но для показанного вами ввода и вывода следующая команда sed
может выполнить преобразование, учитывая, что ваш входной файл содержит ограничители строки CR-LF:
sed 's/,/:/g;s/ /,/g' <<<$(tr -d '\r' <input_file) | tee output_file.tmp
mv output_file.tmp input_file
Это работает:
cat test| sed s/,/:/g | sed s/$/,/g | xargs
Но производит:
22:33, 45:533,
Таким образом, Вам, вероятно, придется использовать эту более длительную версию для получения точного результата, Вы попросили:
cat test| sed s/,/:/g | sed s/$/,/g | xargs | sed "s/, /,/g"
Я вполне уверен существуют лучшие способы сделать это с sed/awk, хотя это действительно достигает того, что Вы просите, и довольно легко читать.
Неэффективно, но обязательно работает:
Откройте файл в gedit. Нажмите Ctrl kbd> + H kbd>. В поле find введите ,
, а вместо - тип :
. Затем выберите «Заменить все».
Затем снова откройте экран «Найти и заменить». В поле Find введите \n
и оставьте поле Replace пустым. Затем выберите «Заменить все».
Вот и все:)