Насколько я понимаю, нет необходимости читать его в массив 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
).