LINUX.ORG.RU

bash как добавить ковычки

 


0

1

Добрый день! подскажите как добавить ковычки в каждом слове, и запятые но в последнем слове запятая не нужна


сейчас: text1 text2 text3 text4 text5
нужно:  "text1", "text2", "text3", "text4", "text5"


Последнее исправление: vbox (всего исправлений: 1)

В реальном документе одна строчка или несколько? Присутствует ли какой-либо другой текст, который не нужно трогать?

Vsevolod-linuxoid ★★★★★
()
sed -i.backup 's/(text[0-9])/"\1"/g' file.txt

Пишу наугад, линукса под рукой нет

anonymous
()
Ответ на: комментарий от Vsevolod-linuxoid

Весь текст заворачиваем в ковычки сколько строк, не важно в каждом слове ставим ковычки все строки в таком формате text1 text2 text3

vbox
() автор топика
Ответ на: комментарий от vbox

Важное замечание — запятая не нужна в конце строки или в конце документа?

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Deleted

Многие предпочитают awk, я - sed:

Это потому твоё решение превращается в тыкву, если в тексте есть висячий или предшествующий пробел? :)

Deleted
()
Ответ на: комментарий от Deleted

Это потому твоё решение превращается

Естно. Поэтому и использовал конкретный пример. Зачем усложнять?

Deleted
()
Ответ на: комментарий от Deleted

Ну-ну.
Да, и два пробела между элементами его тоже ломают. Очень опенсорсное решение, если вы понимаете, о чём я.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Хотел предложить однострочник на питоне, но мне внезапно стало жутко лень тратить время на такую херню. А в чём у тебя проблема, задача то тривиальная?

anonymous
()
echo text1 text2 text3 text4 text5 | (while read line; do for words in $line ; do printf \"$words\"", " ; done; done) | rev | cut -c 3-  | rev

Немножк безумия.

anonymous
()
Ответ на: комментарий от Deleted

если вы понимаете, о чём я

Прекрасно понимаю. Теперь пришло время ТС понять это путём «прозрения».

Deleted
()
Ответ на: комментарий от vbox

Подскажи как исключить все же двоеточие ":" из ковычек ?

Конкретнее, «что» во «что» превратить надо? Здесь уже намекали про «подводные камни».

Deleted
()

ковычки

помогать с информатикой школьнику, который даже русский язык не осилил? no way

anonymous
()
Ответ на: комментарий от Deleted

Не не чутка не так


есть текст в таком формате "text1":"text2" "text3" "text4" "text5"
пусть ставит кавычки как и ставил, но не ставил в двоеточии : 
(не нужно после каждого текста ставить двоеточие, просто исключить кавычки в ней)

vbox
() автор топика
Ответ на: комментарий от vbox

Выбери уже инструмент адекватно, очевидно это не ПРОСТОТЕКСТ™ и регулярки тут совершенно не упёрлись (как и баш).

anonymous
()
Ответ на: комментарий от Deleted

сырьё:text1:text2 text3 text4 text5
выход:"text1":"text2", "text3", "text4", "text5"
выходит что запятые не нужны в первом слове и в последнем
vbox
() автор топика

Может быть повторюсь, но можно так:
echo "text1 text2 text3 text4 text5" | sed -r 's/\s+/", "/g;s/^\s*/"/g;s/\s*$/"/g'

blexey ★★★★★
()
Ответ на: комментарий от Deleted

Спасибо тебе большое! то что нужно

vbox
() автор топика
Ответ на: комментарий от Deleted

Извини! последний вопрос: как уставить еще запятую в конце строки? после «text5» тоже запятая

vbox
() автор топика
Ответ на: комментарий от vbox

как уставить еще запятую в конце строки?

echo "text1:text2 text3 text4 text5" | sed -e 's/^/\"/;s/\:/\":\"/g;s/ /\", \"/g;s/$/\",/;'

И прочитай уже Advanced Bash-Scripting Guide: Искусство программирования на языке сценариев командной оболочки, наконец.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от anonymous

Немножк безумия.

Да, не годится для спецсимволов вместо text*. И можно же сделать красиво и универсально:

first=", "
while read -a line; do
  out=
  for i in ${!line[@]}; do
    out+="${first:i==0?2:0}\"${line[i]}\""
  done
  echo "$out"
done

vodz ★★★★★
()
Ответ на: комментарий от anonymous

САМОЕ ВРЕМЯ ДЛЯ ОДНОСТРОЧНИКА НА PERL^W БАШЕ!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.