Jak zastąpić tylko ostatnie wystąpienie „-” w ciągu spacją przy użyciu sed
?
Na przykład:
echo $MASTER_DISK_RELEASE
swp-RedHat-Linux-OS-5.5.0.0-03
ale chcę uzyskać następujące dane wyjściowe (zastępując ostatni łącznik [„-”] spacją)
swp-RedHat-Linux-OS-5.5.0.0 03
text-processing
sed
maihabunash
źródło
źródło
sed
nie obsługują dopasowania wzorca. W takim przypadku będziesz potrzebować czegoś innego,perl -pne 's/(.*)-/$1 /'
czy to rozwiązania rozszerzenia parametrów @ Thora, czy czegoś innego.sed -r
.sed -r 's/(.*)-(.*)-/\1 \2 /')
.Można to również obsłużyć dzięki rozszerzeniu parametrów bash :
Wydajność:
źródło
Coś takiego działało dla mnie, chociaż jestem pewien, że są lepsze sposoby
źródło
bash
funkcji rozszerzania parametrów, która działa dobrze, jeśli używabash
również OP . Będzie delikatna równowaga między czytelnością (do tego stopnia, że jest bardzo gadatliwa) a korzystaniem z odpowiednich narzędzi, ale częściej niż przy użyciu odpowiednich narzędzi dominuje.