Как заменить запятую запятой с помощью sed?

Я хотел бы заменить пустое пространство между каждым и каждым полем с помощью разделителя запятой. Может кто-то дать мне знать, как я могу это сделать. Я попробовал команду ниже, но это не работает .thanks.

My command:
:%s//,/


53 51097 310780 1
56 260 1925 1
68 51282 278770 1
77 46903 281485 1
82 475 2600 1
84 433 3395 1
96 212 1545 1
163 373819 1006375 1
204 36917 117195 1

Ответ 1

Если вы говорите о sed, это работает:

sed -e "s/ /,/g" < a.txt

В vim используйте такое же регулярное выражение для замены:

s/ /,/g

Ответ 2

Внутри vim, вы хотите ввести, когда в обычном (командном) режиме:

:%s/ /,/g

В командной строке терминала вы можете использовать sed для выполнения этого в файле:

sed -i 's/\ /,/g' input_file

Примечание. параметр -i для sed означает "редактирование на месте", так как в нем будет изменен входной файл.

Ответ 3

Я знаю, что это не то, что вы просите, но для замены запятой на новую строку это отлично работает:

tr , '\n' < file

Ответ 4

Попробуйте выполнить следующую команду, и она будет работать для вас.

sed "s/\s/,/g" orignalFive.csv > editedFinal.csv

Ответ 5

Если вы хотите вывод на терминал,

$sed 's/ /,/g' filename.txt

Но если вы хотите отредактировать сам файл, то есть, если вы хотите заменить пробел запятой в файле, тогда

$sed -i 's/ /,/g' filename.txt

Ответ 6

Если ваши данные содержат произвольную последовательность пустых символов (табуляция, пробел), и вы хотите заменить каждую последовательность одной запятой, используйте следующее:

sed 's/[\t ]+/,/g' input_file

или же

sed -r 's/[[:blank:]]+/,/g' input_file

Если вы хотите заменить последовательность пробельных символов, которая включает в себя другие символы, такие как возврат каретки и возврат на одну позицию и т.д., Используйте следующее:

sed -r 's/[[:space:]]+/,/g' input_file

Ответ 7

Я только что подтвердил, что:

cat file.txt | sed "s/\s/,/g"

успешно заменяет пробелы запятыми в терминалах Cygwin (mintty 2.9.0). Ни один из других образцов не работал для меня.

Ответ 8

В Linux используйте тест для проверки ниже (он заменит пробелы запятой)

 sed 's/\s/,/g' /tmp/test.txt | head

позже вы можете перенести вывод в файл, используя следующую команду:

sed 's/\s/,/g' /tmp/test.txt > /tmp/test_final.txt

PS: test - это файл, который вы хотите использовать