Я пытаюсь сделать некоторое обходное решение для решения проблемы.Вставить строку после совпадения в переменной
У нас есть программа gtk +, которая вызывает сценарий bash, который вызывает rdesktop. В машине мы обнаруживаем, что вызов rdesktop требует дополнительного параметра ... Так как я ничего не написал об этом коде, и я могу изменить часть GTK проблемы, я могу только отредактировать скрипт bash, который делает средний вызов между вызовами.
У меня есть переменная CMD с чем-то, что выглядит как:
rdesktop -x m -r disk:USBDISK=/media -r disk:user=/home/user/ -r printer:HP_Officejet_Pro_8600 -a 16 -u -p -d -g 80% 192.168.0.5
мне нужно «жить редактировать» эту строку, когда существует параметр принтера, он добавляет = «MS Publisher фотонаборном» после того, как принтер имя.
Лучший я accompplish до сих пор
[email protected] ~ $ input="rdesktop -x m -r disk:USBDISK=/media -r disk:user=/home/user/ -r printer:HP_Officejet_Pro_8600 -a 16 -u -p -d -g 80% 192.168.0.5"
[email protected] ~ $ echo $input | sed s/'printer:.*a /=\"MS Publisher Imagesetter\" '/
которые возвращают меня:
rdesktop -x m -r disk:USBDISK=/media -r disk:user=/home/user/ -r ="MS Publisher Imagesetter" 16 -u -p -d -g 80% 192.168.0.5
Почти, но мне нужно добавить строку, а не заменять его.
help?
Редактировать: я вставил незавершенные образцы. фиксированной
Edit2: С помощью того, кто ответит, я в конечном итоге с
echo "$input" | sed 's/\(printer:\)\([^ ]*\)/\1\2="MS Publisher Imagesetter"/'
Использование захвата группы '()' 'как '/\(printer:.*\)/\1=\"MS Издательство фотонаборном \» /' ' –