Usługa usunięcia całej białej przestrzeni z łańcucha?

4

Ostatecznie staram się stworzyć usługę, która pozwoli mi policzyć wszystkie wybrane znaki spoza białych znaków. Aby się do tego dostać, szukam sposobu na usunięcie wszystkich białych znaków z ciągu znaków w usłudze, z której mogę następnie korzystać do innych celów. Na przykład, głównie chcę go użyć do uzyskania szybkich współrzędnych DNA, patrząc na dane wyjściowe w Terminal.app, ale mogę myśleć o innych zastosowaniach, takich jak znaki kodu zliczającego.

Znalazłem skrypty jabłek do usuwania spacji, ale nic, co znalazłem, nie uwzględnia kart, znaków nowej linii, zwrotów karetki ani żadnych innych dziwnych lub dziwnych znaków, które nie są wyświetlane.

Uwaga: Nie chcę tworzyć pliku ani używać ani zmieniać schowka.

Pytanie poboczne: Czy istnieje sposób na wyświetlenie wyniku (na krótko) w ramce, tak jak sposób wyświetlania numerów telefonów z aplikacji Kontakty?

hepcat72
źródło
„Nie twórz pliku” - nawet tymczasowego? Często umieszczam wyniki pośrednie w / tmp / tmp wiedząc, że wkrótce je zastąpię lub następny rozruch usunie je.
WGroleau
Mógłbym napisać własne rozwiązanie, jeśli chciałbym to zrobić za pomocą plików tymczasowych. Zastanawiałem się, jak to zrobić bez żadnych plików (w ten sposób czuję się czystszy).
hepcat72
Po ponad trzydziestu latach czyszczenia kodu w kodeksie rozumiem, że chcę „poczuć się czysto”. Ale czasami muszę zmusić się, by oprzeć się szczegółom, które naprawdę nie mają znaczenia. Dla kodu, który musi trwać, czytelny jest ważniejszy niż elegancki.
WGroleau
Czy istnieje sposób na potraktowanie zaznaczenia jako standardowego polecenia i zastąpienie zaznaczenia stdout? Wyrażenie regularne w perlu byłoby następujące: S :: '
WGroleau
Tak, to bardzo proste perlre, ale nie masz tego w pełni. Byłoby to s: s :: gs. Na końcu potrzebujesz s, aby dopasować nowe wiersze, ale nie sądzę, aby obejmowało to zwroty wagonów. W tym celu potrzebujesz s: [s]: gs. W ten sposób zrobiłbym to, gdybym użył pliku. Nie ufałbym echom, zwłaszcza jeśli jest to wieloliniowość. To pierwsza rzecz, która przychodzi na myśl. Ale tak naprawdę to rozwiązanie AppleScript było tym, czego szukałem. Nie radzi sobie z dziwnymi postaciami, ale jest wystarczająco dobry.
hepcat72

Odpowiedzi:

4

W Automator , Stwórz nowy Usługa z następującymi ustawieniami:

  • Usługa otrzymuje wybrane [tekst] w [Terminal]

Dodać Uruchom AppleScript działania , zastępując domyślne kod z kod poniżej:

Przykład AppleScript kod:

on run {input, parameters}

    set selText to item 1 of input as text
    set AppleScript's text item delimiters to {space, tab, linefeed, return}
    set selText to text items of selText
    set AppleScript's text item delimiters to {}
    set selText to selText as string

    display dialog ¬
        "The selection contains " & (count characters of selText) ¬
        & " characters." & linefeed & linefeed & selText ¬
        buttons {"OK"} default button 1

end run

Zapisz Automator Usługa jak np .: Policz wybrane postacie

Teraz w Terminal , wybierz poszukiwanego wybór , np .:

Selected Text

Kliknij prawym przyciskiem myszy i wybierz Policz wybrane postacie z Usługi menu kontekstowe .

Przykład wydajność z wybór pokaż powyżej:

Display Dialog


Uwaga: The przykład AppleScript kod jest po prostu i nie zatrudnia żadnego obsługa błędów i ma na celu tylko pokazanie jednego z wielu sposobów wykonania zadania. Obowiązkiem użytkownika jest zawsze dodanie / użycie odpowiedniego obsługa błędów w razie potrzeby / pożądane.

user3439894
źródło
Niesamowite. Dzięki wielkie. Wiedziałem, że ktoś będzie wiedział, jak to zrobić!
hepcat72
0

Możesz spróbować WordService. DEVONtechnologies .

Jest darmowy i robi to, co chcesz (wybierz Usługi - & gt; WordService: Statystyki ) plus dużo więcej.

Oto wynik z wyborem na pytanie:
enter image description here

Od góry do dołu:
Postacie
Przestrzenie
Całkowity
Słowa
Kwestia

PeterVP
źródło
1
Jest to ładne narzędzie, korzystałem z niego przez wiele lat, jednak to pytanie dotyczy terminala i AppleScript, a nie jakiegoś narzędzia innej firmy, a to tak naprawdę nie odpowiada na pytanie w ramach zakresu, o który prosiłem.
user3439894
1
„Chcę utworzyć usługę, która pozwoli mi policzyć wszystkie wybrane znaki spoza białych znaków” , Wordservice robi to i amp; działa z wyjściem terminala.
PeterVP
Tak, ale nie mogę użyć wyjścia do zliczania nukleotydów. Chcę ciągnąć z powrotem, choć przyznaję, że nie pytałem tego wprost.
hepcat72
Zmodyfikowałem pytanie, aby wyjaśnić zamieszanie związane z tym, czego szukałem. Masz rację, to nie było jasne.
hepcat72