Sed: замена букв на определенных позициях - PullRequest
1 голос
/ 09 мая 2019

У меня есть файл со структурой:

N1H3O1 C2H2
C1H4 H201
C1H1N1 N1H3
C2N1O1P1H3 P5

Я пытаюсь подсчитать сумму коэффициентов в каждой из формул.Таким образом, вывод желаемого результата:

1+3+1 5 2+2 4
1+4 5 2+1 3
1+1+1 3 3+1 4
2+1+1+1+3 8 5 5

То, что я сделал, это простая замена каждой буквы на «+», а затем удаление первого «+».

Однако я хотел бы знать, как сделать это более правильно в sed, используя операторы ветвления и потока.

1 Ответ

1 голос
/ 10 мая 2019

Проблема с вашим вводом - 0, который используется вместо O, что может затруднить создание регулярного выражения для него, которое вы можете увидеть здесь :

enter image description here

([^A-Z]+)*([0-9]+)

Кроме этого, вы можете записать числа, просто добавив ([^A-Z]+).

Однако вы, возможно, не захотите выполнять эту задачу с регулярным выражением, поскольку ваши данные, за исключением этого 0, довольно структурированы, и вы можете написать скрипт для этого.

...