Ответ 1
Если вы говорите о sed
, это работает:
sed -e "s/ /,/g" < a.txt
В vim
используйте такое же регулярное выражение для замены:
s/ /,/g
Я хотел бы заменить пустое пространство между каждым и каждым полем с помощью разделителя запятой. Может кто-то дать мне знать, как я могу это сделать. Я попробовал команду ниже, но это не работает .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
Если вы говорите о sed
, это работает:
sed -e "s/ /,/g" < a.txt
В vim
используйте такое же регулярное выражение для замены:
s/ /,/g
Внутри vim
, вы хотите ввести, когда в обычном (командном) режиме:
:%s/ /,/g
В командной строке терминала вы можете использовать sed
для выполнения этого в файле:
sed -i 's/\ /,/g' input_file
Примечание. параметр -i
для sed
означает "редактирование на месте", так как в нем будет изменен входной файл.
Я знаю, что это не то, что вы просите, но для замены запятой на новую строку это отлично работает:
tr , '\n' < file
Попробуйте выполнить следующую команду, и она будет работать для вас.
sed "s/\s/,/g" orignalFive.csv > editedFinal.csv
Если вы хотите вывод на терминал,
$sed 's/ /,/g' filename.txt
Но если вы хотите отредактировать сам файл, то есть, если вы хотите заменить пробел запятой в файле, тогда
$sed -i 's/ /,/g' filename.txt
Если ваши данные содержат произвольную последовательность пустых символов (табуляция, пробел), и вы хотите заменить каждую последовательность одной запятой, используйте следующее:
sed 's/[\t ]+/,/g' input_file
или же
sed -r 's/[[:blank:]]+/,/g' input_file
Если вы хотите заменить последовательность пробельных символов, которая включает в себя другие символы, такие как возврат каретки и возврат на одну позицию и т.д., Используйте следующее:
sed -r 's/[[:space:]]+/,/g' input_file
Я только что подтвердил, что:
cat file.txt | sed "s/\s/,/g"
успешно заменяет пробелы запятыми в терминалах Cygwin (mintty 2.9.0). Ни один из других образцов не работал для меня.
В Linux используйте тест для проверки ниже (он заменит пробелы запятой)
sed 's/\s/,/g' /tmp/test.txt | head
позже вы можете перенести вывод в файл, используя следующую команду:
sed 's/\s/,/g' /tmp/test.txt > /tmp/test_final.txt
PS: test - это файл, который вы хотите использовать