Скорее всего, у вас нет прав на запись в каталог. Файловые операции :создают, удаляют и переименовывают все изменения каталога.
cat
и vim
просто изменяют содержимое файла и не требуют изменения файла. sed -i
записывает временный файл и переименовывает его.
Поскольку вы уже можете вставлять кавычки вокруг запятых, просто добавьте ["
и "]
в начале и в конце:
sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'
Пример:
$ echo string1,string2,string3 | sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'
["string1","string2","string3"]
Вот чистое решение Баша:
$ str='string1,string2,string3'
$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]
Поскольку этот подход не требует внешних утилит и подпроцессов, он должен быть быстрым.
Мы используем подстановку шаблона bash , чтобы заменить все запятые на ","
. Поскольку "
является активным символом оболочки -, мы должны экранировать его в команде:
$ echo ${str//,/\",\"}
string1","string2","string3
Последний шаг — добавить ["
в начало и "]
в конец строки. Таким образом:
$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]