2016-06-11 19 views
-1

Ich akzeptiere Benutzereingaben, $ 1, nach einem Datum fragen. Leute können die Hilfeseite nicht benutzen, also bin ich gezwungen, sie zu ignorieren, wenn ich sie durch grep führe.Wie behalten Sie nur drei Buchstaben in einer Variablen in der Bash

Meine Eingabe ist Tag-Monat-Jahr - wobei der Tag keine vorangehende 0 hat und der Monat nur 3 Buchstaben lang ist.

Ich habe alles getan, außer für die 3 Buchstaben "cut-down."

Kann jemand mir helfen, "August" zum Beispiel zu nehmen und es auf Aug zu reduzieren, in dieser einzelnen Variable? Oder vielleicht einen anderen Weg? Ich bin für alles offen.

Vielen Dank im Voraus!

+0

'm =“ August"; m = "$ {m: 0: 3}"; echo "$ m" ' – Cyrus

+3

Ich kann die Ironie des Stellens einer Frage, über Leute, die die Hilfeseite nicht benutzen können, die durch das Lesen der' bash' Mannseite beantwortet werden konnte, nicht übersehen. – chepner

+0

@chepner, ziemlich reddit Antwort und ebenso hilfreich. – TJO

Antwort

4

Sie können dies in der Bash tun, ohne externe Befehle:

a='0heLLo wOrld' 
a=${a#0}  # Remove leading 0. Change to ${a##0} to remove multiply zeros 
a="${a:0:3}" # Take 3 first characters 
a=${a,,}  # Lowercase 
a=${a^}  # Uppercase first 
printf "%s\n" "$a" # Hel 

Alternative kann es in einem sed Befehl:

% sed 's/^0//;s/\(.\)\(..\).*/\u\1\L\2/' <<< "0heLLo wOrld" 
Hel 

Pannen

s/^0//;     # Remove leading 0. Change to 's/^0*//' to remove multiply zeros 
s/ 
    \(.\)\(..\)    # Capture first character in \1 and next two in \2 
      .*   # Match rest of string 
       /\u\1\L\2/ # Uppercase \1 and lowercase \2 
+0

Hilfreich für die gesamte Schule in sed --- obwohl, erwartet dies die ersten 3 immer diejenigen, die benötigt werden; Nach was ich suchte, ist etwas, das die ersten drei gesehenen Buchstaben, Periode, nimmt. Also könnte es Januar-2016 sein, wo es Jan ... oder 04-Juli-2015 braucht, wo es Jul braucht. Irgendwelche Magie dafür? Danke noch einmal. – TJO

+0

@TJO Das ist eine ganz andere Frage. Du solltest ein wenig mehr Zeit investieren, um deine Fragen zu formulieren, damit Missverständnisse wie diese nicht passieren :-) – andlrc

+0

Ich habe es mehrmals gelesen, um klar zu sein und gab Beispiele - ich denke, ich kann einfach nicht klar genug für alle sein: - Wie ich schon sagte, fordert es Benutzereingaben für ein Datum an. Es könnte jeden Monat sein - und unabhängig davon, was als Benutzereingabe angegeben wird, wenn es Buchstaben gibt, möchte ich nur 3 behalten. Ich gebe deinem letzten Kommentar eine Chance. Vielen Dank. – TJO