Как вставить строку между двумя последовательными,?

Я хочу вставить строку, возможно, NA между двумя последовательными,.

Это моя строка.

 5 Local A2A SMS valid for 1 day , 10 A2A SMS valid for 2 days , 10 Local A2A SMS for 2 days only , Daily 5 Local A2A night SMS for 2 days , daily 5 local A2A night SMS for 7 days ,,,,, 5 local A2A night SMS for 2 days ,,, Outgoing Rs 40/min and Incoming Rs 30/min. Applicable only on selected countries and Operators ,,, Outgoing Rs 30/min and Incoming Rs 20/min. Applicable only on selected countries and Operators ,,,,,,,,, 5 Local night A2A SMS(11PM to 6 AM-2 days) ,, 5 Night A2A SMS for 1 Day ,, Roaming Tariff - Incoming Free, Outgoing local @ 80p/min, STD @1.15Rs/min with Talk Time 25 in main A/c ,,, 5 night local A2A sms (2 Days) ,,, Top up TT in Main a/c 95.79 + 5 A2A Night SMS. SMS valid for 2 days ,,, 300 MB 3G/4G Data , 138.51 TT(unltd val)+5 nite A2ASMS, SMS valid for 2 days , Roaming Tariff - Incoming Free, Outgoing local @ 80p/min, STD @1.15Rs/min with Talk Time 120 in main A/c ,, 500 MB 3G/4G data for 30 Days , 2 SMS valid for 2 days , 1Gb 3G/4G and 100TT , 1.5GB 3G/4G and 100TT , 2GB 3G/4G and 100TT , 2.5GB 3G/4G and 100TT , 3GB 3G/4G and 100TT , 3.5GB 3G/4G and 100TT , 4GB 3G/4G and 100TT , 200 MB 3G/4G Data , Roaming Tariff - Incoming Free, Outgoing local @ 80p/min, 

Например, в строке есть 5 последовательных, 3 последовательных, 6 последовательных запятых. Я хочу вставить NA между каждой запятой.

,,,,, преобразуется в ,NA,NA,NA,NA, т. д.

2 Solutions collect form web for “Как вставить строку между двумя последовательными,?”

С GNU sed:

 echo "your string with commas" | sed ':a;s/,,/,NA,/g;ta' 

:a : метка с именем a

s/,,/,NA,/g : искать и заменять все ( g ) ,, на ,NA,

ta : Если s/// выполнил успешную подстановку, то перейдите к метке a

Вы можете сделать это в bash следующим образом:

  a="5 Local A2A SMS valid for 1 day , 10 A2A SMS valid for 2 days , 10 Local A2A SMS for 2 days only , Daily 5 Local A2A night SMS for 2 days , daily 5 local A2A night SMS for 7 days ,,,,, 5 local A2A night SMS for 2 days ,,, Outgoing Rs 40/min and Incoming Rs 30/min. Applicable only on selected countries and Operators ,,, Outgoing Rs 30/min and Incoming Rs 20/min. Applicable only on selected countries and Operators ,,,,,,,,, 5 Local night A2A SMS(11PM to 6 AM-2 days) ,, 5 Night A2A SMS for 1 Day ,, Roaming Tariff - Incoming Free, Outgoing local @ 80p/min, STD @1.15Rs/min with Talk Time 25 in main A/c ,,, 5 night local A2A sms (2 Days) ,,, Top up TT in Main a/c 95.79 + 5 A2A Night SMS. SMS valid for 2 days ,,, 300 MB 3G/4G Data , 138.51 TT(unltd val)+5 nite A2ASMS, SMS valid for 2 days , Roaming Tariff - Incoming Free, Outgoing local @ 80p/min, STD @1.15Rs/min with Talk Time 120 in main A/c ,, 500 MB 3G/4G data for 30 Days , 2 SMS valid for 2 days , 1Gb 3G/4G and 100TT , 1.5GB 3G/4G and 100TT , 2GB 3G/4G and 100TT , 2.5GB 3G/4G and 100TT , 3GB 3G/4G and 100TT , 3.5GB 3G/4G and 100TT , 4GB 3G/4G and 100TT , 200 MB 3G/4G Data , Roaming Tariff - Incoming Free, Outgoing local @ 80p/min," b= while [ "$b" != "$a" ] do b="$a" a="${a/,,/,NA,}" done echo "$a" 
  • Как печатать один столбец для других столбцов комбинированный путь без awk?
  • Вставка пространства после 5 символов при подсчете обратного
  • Добавить ;; вверху и внизу каждого файла в списке
  • как заменить разделитель между двумя другими разделителями в unix
  • Удалите повторяющиеся поля в данном столбце (после проверки идентификатора)
  • Как выбрать строки в зависимости от того, сколько раз подряд число присутствует в столбце?
  • Проверьте, имеются ли все строки файла в другом файле
  • Функция vlookup в unix
  • Динамически вычисленная замена строки стандартными инструментами
  • Сохраняйте символы до и после определенного символа
  • Как добавить и добавить текст в текстовый вывод и сохранить его в одном файле?
  • Linux и Unix - лучшая ОС в мире.