Скрипт за услугата Automator за премахване на връщане на каретка и замяна с тях на запетая и интервал в приложението

Използвайки automator, бих искал да създам услуга, която ми позволява да правя списък

EX.

list item 1
list item 2
list item 3
list item 4

и премахнете return Carriage returns и ги заменете със запетая и интервал ,

EX.

list item 1, list item 2, list item 3, list item 4 

В моето проучване се натъкнах на различни начини за премахване на интервал или връщане на каретка, но всички изглеждат по следния начин:

sed 's/[:space:]+/,/g' orig.txt > modified.txt

Вероятно съм пропуснал функцията, която търсех. По никакъв начин не съм програмист и понякога нещата, които се казват или описват, ми минават през главата.

Създаването на текстов документ и след това модифицирането му не работи за мен. Трябва да мога да го променя, преди документът да бъде създаден.

Възможно ли е това?

Целта ми е да получа скрипт, който мога да въведа в услуга на Automator, който ще ми позволи да избера текст в приложение, да щракна с десния бутон, да избера предварително направената функция, която ми позволява да премахна връщанията на каретката и да ги заменя със запетая и пространство.

Връзките към статии също се оценяват, ако всъщност точно този въпрос е бил задаван преди.

Всяка помощ се оценява.

Благодаря на всички!

Флойд


person Floyd    schedule 06.04.2013    source източник
comment
о, просто осъзнайте, че automator е програма/инструмент под Mac OS..... уведомете ме дали отговорът ми помага, ако изобщо не, бих го премахнал..   -  person Kent    schedule 07.04.2013
comment

Така че се опитвам да използвам bluetooth модул (HC-06), за да чета данни, изпратени до моя Netduino платка от моя мобилен телефон. Не мога обаче да преобразувам байтовете в текст, за да мога да сравня символите, които изпращам, и по този начин да ги превърна в условни изрази. От това, което видях, трябва да използвам следния ред код в C#, за да го променя от байтов масив в низ, но не мога да намеря дефиниция за клас в моя обхват!! Ето реда:

Encoding.ASCII.GetString();

И ето грешката, която получавам:

'System.Text.Encoding' does not contain definition for 'ASCII'

Използвам .Net Micro Framework версия 4.1 с Visual Studio Express 2012 IDE. Използвам оригиналните Netduino, Netduino 1 с 4.1 Framework.

  -  person Floyd    schedule 07.04.2013
comment
добре е, ще премахна този отговор. Имам 0 опит с плодовата система.. :) btw, добавям file в края на реда. awk приема и stdin. бихте могли напр. echo foo|awk ... но не знам дали помага във вашия автоматизатор. късмет..   -  person Kent    schedule 07.04.2013


Отговори (1)


Изберете шаблона на услугата, проверете, че изходът замества избрания текст и добавете действие на скрипт за изпълнение на обвивката като това и изберете предаване на вход като аргументи:

x=${1%$'\n'}
printf %s "${x//$'\n'/, }"
[[ "$1" != "$x" ]] && printf '\n\n' || exit 0
  • ${var%pattern} премахва шаблон от края
  • ${var//search/replace} замества всички срещания
  • printf %s е като echo -n (не добавя допълнителен нов ред)
  • Automator показва диалогов прозорец за грешка, ако скриптовете не излизат с 0
person Lri    schedule 07.04.2013
comment
Здравей Лаури, поставих скрипта и следвах инструкциите, които ми даде. Когато обаче избера някакъв текст, щракнете с десния бутон и изберете услугата, която съм запазил, нищо не се случва. Уверих се, че съм настроил услугата да получава текст във всяко приложение и превключваният изход замества избрания текст и го изключва. Не видях никакви резултати. Какво може да правя грешно? Имайте предвид, че в никакъв случай не съм програмист. Все още се уча. Оценявам безкрайно вашата помощ. Благодаря. - person Floyd; 09.04.2013
comment
Променихте ли Pass input на as arguments? - person Lri; 09.04.2013
comment
да Предадох входове като аргументи. И за да не бъда излишен, но искам да съм сигурен, ето последователността от стъпки, които правя, когато се опитвам да го използвам: изберете текст в приложение, щракнете с десния бутон, изберете предварително създадената функция, която ми позволява да премахна каретката връща и ги заменете със запетая и интервал. Когато го тествахте извън програмата, работи ли? - person Floyd; 09.04.2013
comment
Файлът всъщност има ли окончания на редове CR (стар Mac) или CRLF (Windows)? Услугата е предназначена да работи само с LF линии. Можете също така да копирате текст и да стартирате това в терминала: x=$(pbpaste); echo "${x//$'\n'/, }". - person Lri; 10.04.2013
comment
Последната команда проработи! И в момента предполагам (все още измислям начин да кажа окончателно), но трябва да имам LF окончания на редовете. Аз съм на по-нов OSX Mac. 10.7.5. - person Floyd; 10.04.2013