Я хочу взять строку и добавить ее в конец строки.Проблема в том, что шаблон не соответствует.Я также хочу сохранить целую строку без изменений, просто скопируйте ее часть и добавьте в конец, разделяя ее точкой с запятой.Я искал похожие вопросы, но они точно не отвечают на то, что я пытаюсь сделать.
Это файл примера с тысячами строк (входные данные):
Group: ch.qos.lback Name: lback.sa Version: 0.1.11
Manifest Project URL: http://www.xx.x
Manifest license URL: http://www.xx.x/l.html
SUM License: Abra Nabra License - v 3.0 \- http://www.xx.x/l.html
SUM License: GNU Lesser General Public License \- http://www.gnu.org/licenses/lhtml
Group: com.aol.sim Name: cycact Version: 3.0.0-RT
SUM Project URL: https://xx.com/xx
SUM License: The Apache Software License, Version 2.0 \- http://www.apache.org/licenses/LICENSE-2.0.txt
Group: com.fa Name: ce Version: 1.3.4
SUM License: The Apache Software License, Version 2.0 \- http://www.apache.org/licenses/LICENSE-2.0.txt
Embedded license: cle-1.3.4.jar/META-INF/LICENSE cle-1.3.4.jar/META-INF/NOTICE
Что бы я хотелНапример, желаемый вывод:
Group: ch.qos.lback Name: lback.sa Version: 0.1.11
Manifest Project URL: http://www.xx.x
Manifest license URL: http://www.xx.x/l.html
SUM License: Abra Nabra License - v 3.0 \- http://www.xx.x/l.html;Abra Nabra License - v 3.0
SUM License: GNU Lesser General Public License \- http://www.gnu.org/licenses/lhtml;GNU Lesser General Public License
Group: com.aol.sim Name: cycact Version: 3.0.0-RT
SUM Project URL: https://xx.com/xx
SUM License: The MIT License, Version 2.0 \- http://www.x.x.txt;The MIT License, Version 2.0
Group: com.fa Name: ce Version: 1.3.4
SUM License: The Apache Software License, Version 2.0 \- http://www.apache.org/licenses/LICENSE-2.0.txt;The Apache Software License, Version 2.0
Embedded license: cle-1.3.4.jar/META-INF/LICENSE cle-1.3.4.jar/META-INF/NOTICE
, поэтому, в основном, извлеките имя лицензии и добавьте его в конец.
e.g. ;Abra Nabra License - v 3.0
Я могу сделать следующее, чтобы получить строку между ними и сохранитьв переменной:
var=$(echo "SUM License: Apache License, Version 2.0 \- http://www.apache.org/licenses/LICENSE-2.0" | gsed -n 's/.*\SUM License: \(.*\)\http.*/\1/p')
и затем добавьте его в конец файла, выполнив еще один sed с циклом while:
gsed "/^SUM License:/ s/$/;$var;/"
Есть ли лучший способ сделать это?где я могу копировать и добавлять, не возиться много?