Как заменить запятую символом в Unix bash

У меня есть строка ниже:

"BBBB,AAAA" разделен с comma. Мне нужно добавить .done к каждому значению строки.

Когда я пытаюсь ниже. Это не работает. Я пытаюсь заменить , на .done, но это не работает. Также мне нужно .done в конце как AAAA, так и BBBB

-bash-3.2$ echo "AAAA,BBBB" |tr "," ".done" 
 AAAA.BBBB

Ожидаемый результат:

AAAA.done  BBBB.done

Спасибо за вашу помощь.

Редактировать:

После предложения @Ravindra я немного изменил его, и он работает нормально, но теперь проблема заключается в том, чтобы обрезать пробелы.

-bash-3.2$ echo "AAAA,BBBB ,CCC, DDD" | sed 's/,/.done /g;s/$/.done/'
 AAAA.done BBBB .done  CCC.done  DDD.done
               ^  
               getting space here

Название ОС: SunOS


person XING    schedule 22.03.2018    source источник
comment
В следующий раз было бы неплохо указать, что «Не работает» означает, что только запятая была заменена 1-м символом в .done, то есть точкой.   -  person TimBrownlaw    schedule 22.03.2018


Ответы (1)


Следование простому sed может помочь вам в этом.

val="AAAA,BBBB"
echo "$val" | sed 's/,/.done /;s/$/.done/'

Вывод будет следующим.

AAAA.done BBBB.done

ИЗМЕНИТЬ:

awk -v val="$val" 'BEGIN{gsub(/,| ,/,".done ",val);sub(/$/,".done",val);print val}'

EDIT2:

awk -v val="$val" 'BEGIN{gsub(/,| ,/,".done ",val);sub(/$/,".done",val);print val}'
AAA.done  BBB.done  CCC.done DDD.done
person RavinderSingh13    schedule 22.03.2018
comment
Спасибо, сработало... - person XING; 22.03.2018
comment
К сожалению, это не работает, если val='AAA,BBB,CCC. Я имею в виду, когда количество параметров увеличивается. Это не работает. Не могли бы вы предложить - person XING; 26.03.2018
comment
@XING, проверьте мое решение для редактирования сейчас и дайте мне знать тогда же. Он также должен обрабатывать несколько ,, дайте мне знать, хорошо ли это работает для вас? - person RavinderSingh13; 26.03.2018
comment
Еще одна вещь... если строка похожа на "AAA, BBB , CCC ,DDD" , здесь, в этом случае, результат будет AAA.done BBB .done CCC .done. я имею в виду, что пространство между BBB .done также должно быть удалено - person XING; 26.03.2018
comment
@XING, я отредактировал свое решение сейчас, проверьте и дайте мне знать потом? - person RavinderSingh13; 26.03.2018
comment
Получение синтаксической ошибки awk: syntax error near line 1 awk: bailing out near line 1 . не могли бы вы проверить - person XING; 26.03.2018
comment
@XING, в системе Solaris/SunOS измените awk на /usr/xpg4/bin/awk , /usr/xpg6/bin/awk или nawk - person RavinderSingh13; 26.03.2018
comment
@XING, всегда добавляйте имя вашей ОС, которое вы используете, чтобы мы могли добавить решение в соответствии с этим. - person RavinderSingh13; 26.03.2018
comment
@XING, пожалуйста, дайте мне знать, как все прошло? Кроме того, если этот ответ помог вам, вы также можете принять его как правильный ответ (что вы и делали раньше). - person RavinderSingh13; 26.03.2018
comment
Я имею в виду, что я не использовал вашу команду awk, а использовал предыдущую команду. Но я столкнулся с другой проблемой. Пожалуйста, посмотрите, можете ли вы помочь. Я обязательно приму ответ, если он сработает для меня. - person XING; 26.03.2018
comment
@XING, если вы продолжаете говорить, что у вас есть проблемы, не давая описания, боюсь, тогда вам тоже никто не сможет помочь, я думаю, что приложил много усилий, но вы не удосужились предоставить всю информацию в одном комментарии или сообщении, Предоставляю информацию на ваше усмотрение. Я бы посоветовал лучше открыть новую тему с ПОЛНЫМ описанием, спасибо и продолжайте учиться !! - person RavinderSingh13; 26.03.2018
comment
Какая еще информация вам нужна. Я уже отредактировал свой вопрос и опубликовал название ОС. Пожалуйста, смотрите часть редактирования моего вопроса. Дайте мне знать, если вы ничего не понимаете. - person XING; 26.03.2018
comment
awk почему-то не работает со мной. Разве я не могу сделать это более простым способом, как я сделал? - person XING; 26.03.2018
comment
@XING, мой код EDIT обеспечивал требуемый вывод, пожалуйста, посмотрите мой EDIT2, кажется, он обеспечивает правильный вывод в соответствии с вашими потребностями, проверьте и дайте мне знать тогда. - person RavinderSingh13; 26.03.2018
comment
@XING, также упомянутый в комментарии, измените awk на систему Solaris/SunOS, измените awk на /usr/xpg4/bin/awk , /usr/xpg6/bin/awk или nawk - person RavinderSingh13; 26.03.2018
comment
Спасибо, теперь это работает. Но есть ли способ избежать awk ? - person XING; 26.03.2018