Почему для начала/конца строки в регулярном выражении были выбраны каретка (^ )и знак доллара ($ )?

Насколько я понимаю, нет необходимости читать его в массив bashдля создания этого вывода:

$ sed 's/[ "]//g; s/,/ /; s/,//g; s/ /,/; s/.*/|ELEMENT|&|/' <file
|ELEMENT|10,this|
|ELEMENT|20,is|
|ELEMENT|30,all|
|ELEMENT|40,I|
|ELEMENT|50,need2|
|ELEMENT|60,see|

Выражение sedудаляет пробелы и двойные кавычки, заменяет первую запятую пробелом (в этой точке в строке нет других пробелов ), удаляет все остальные запятые, восстанавливает первую запятую и добавляет и добавляет дополнительные данные.

Как вариант, с GNUsed:

sed 's/[ "]//g; s/,//2g; s/.*/|ELEMENT|&|/' <file
Стандарт

(sedне поддерживает комбинацию 2и gв качестве флагов для команды s).

20
30.07.2020, 22:56
0 ответов

Теги

Похожие вопросы