Замените запятые двоеточиями и переместите все значения в одну строку

Я ввел список чисел в Calc и сохранил его как CSV, чтобы все значения в одной строке разделялись запятыми. Я опишу то, что я ищу с bash в следующем примере:

INPUT

22,33
45,533

OUTPUT

22:33,45:533
1
задан 1 January 2012 в 19:05

4 ответа

Решение без внешних двоичных файлов - но более медленное (читает строку за строкой и меняет ', ' → ': ')

while read -u 3 -r line; do 
        echo -n "${line/,/:}," >> new_file
done 3< old_file
0
ответ дан 1 January 2012 в 19:05

Не уверен, правильно ли я понимаю, но для показанного вами ввода и вывода следующая команда sed может выполнить преобразование, учитывая, что ваш входной файл содержит ограничители строки CR-LF:

sed 's/,/:/g;s/ /,/g' <<<$(tr -d '\r' <input_file) | tee output_file.tmp
mv output_file.tmp input_file
0
ответ дан 1 January 2012 в 19:05

Это работает:

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, хотя это действительно достигает того, что Вы просите, и довольно легко читать.

0
ответ дан 1 January 2012 в 19:05

Неэффективно, но обязательно работает:

Откройте файл в gedit. Нажмите Ctrl + H . В поле find введите ,, а вместо - тип :. Затем выберите «Заменить все».

Затем снова откройте экран «Найти и заменить». В поле Find введите \n и оставьте поле Replace пустым. Затем выберите «Заменить все».

Вот и все:)

0
ответ дан 1 January 2012 в 19:05

Другие вопросы по тегам:

Похожие вопросы: