Скрипт для сервиса Automator для удаления возврата каретки и замены ими запятой и пробела в приложении

С помощью автомата я хотел бы создать сервис, который позволяет мне брать список

EX.

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

и удалите возврат каретки и замените их запятой и пробелом ,

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
Opps, только что ответил на ваш предыдущий комментарий. Команда не сработала.   -  person Floyd    schedule 07.04.2013
comment
все в порядке, я уберу этот ответ. У меня нет опыта работы с фруктовой системой .. :) Кстати, я добавляю file в конце строки. awk также принимает стандартный ввод. вы могли бы, например, 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. Я использую более новый Mac OSX. 10.7.5. - person Floyd; 10.04.2013