Mam pliku w formacie jak:Jak analizować nazwę pliku w bash?
system-source-yyyymmdd.dat
Chciałbym, aby móc analizować na różne kawałki nazwy pliku przy użyciu „-” jako ogranicznik.
Mam pliku w formacie jak:Jak analizować nazwę pliku w bash?
system-source-yyyymmdd.dat
Chciałbym, aby móc analizować na różne kawałki nazwy pliku przy użyciu „-” jako ogranicznik.
Można użyć cut command dostać na każdym z pól „” 3, np:
$ echo "system-source-yyyymmdd.dat" | cut -d'-' -f2
source
„-d” określa separator, „-f” określa numer pola, które wymagają
Użyj polecenia cut
.
np.
echo "system-source-yyyymmdd.dat" | cut -f1 -d'-'
wyodrębni pierwszy bit.
Zmień wartość parametru -f
, aby uzyskać odpowiednie części.
Oto instrukcja polecenia Cut.
W zależności od potrzeb, awk jest bardziej elastyczny niż cięcie. Pierwszy zwiastun:
# echo "system-source-yyyymmdd.dat" \
|awk -F- '{printf "System: %s\nSource: %s\nYear: %s\nMonth: %s\nDay: %s\n",
$1,$2,substr($3,1,4),substr($3,5,2),substr($3,7,2)}'
System: system
Source: source
Year: yyyy
Month: mm
Day: dd
Problem jest to, że opisując awk jako „bardziej elastyczne” jest z pewnością jak wywołanie iPhone ulepszony telefon komórkowy ;-)
Inną metodą jest użycie narzędzia do analizowania wewnętrznych Shell, która unika koszt stworzenia procesów potomnych:
oIFS=$IFS IFS=- file="system-source-yyyymmdd.dat" set $file IFS=$oIFS echo "Source is $2"
ładny i elegancki (w głowie :-) używając tylko Zabudowy jest umieszczenie go na tablicy
var='system-source-yyyymmdd.dat'
parts=(${var//-/ })
Następnie można znaleźć części w tablicy ...
echo ${parts[0]} ==> system
echo ${parts[1]} ==> source
echo ${parts[2]} ==> yyyymmdd.dat
Zastrzeżenie: to nie będzie działać, jeśli nazwa pliku zawiera „dziwne” znaki takie jak miejsca lub, niebo zabrania, cytaty, małe cudzysłowy. ..
Jestem ciekawy, dlaczego dodałeś znak zachęty #. Zwykle ten znak wskazuje użytkownika root lub administratora. Ogólnie rzecz biorąc, myślę, że takie rzeczy jak wypróbowanie polecenia ** cut ** będą lepiej wykonywane jako zwykły użytkownik. Użyłbym $ prompt. –
Och, tak - dobry punkt. Muszę przyznać, że byłam wtedy zalogowana jako root i po prostu poszłam na to - zły nawyk, wiem. Powiedziawszy to, myślę, że echo i cut są dwoma najmniej szkodliwymi poleceniami :) Ale ze względu na kompletność, z pewnością zaktualizuję ten przykład od razu. Twoje zdrowie. –
Jak mogę przypisać wyjście do zmiennej? jeśli robię "var =" system-source-yyyymmdd.dat "| cut -d'- '-f2' nie działa. – EsseTi