Bagaimana cara mengganti hanya kejadian "-" terakhir dalam string dengan spasi sed
?
Sebagai contoh:
echo $MASTER_DISK_RELEASE
swp-RedHat-Linux-OS-5.5.0.0-03
tapi saya ingin mendapatkan output berikut (mengganti tanda hubung terakhir [“-“] dengan spasi)
swp-RedHat-Linux-OS-5.5.0.0 03
text-processing
sed
maihabunash
sumber
sumber
sed
tidak mendukung kecocokan pola. Dalam hal ini, Anda akan membutuhkan sesuatu yang lain, baik ituperl -pne 's/(.*)-/$1 /'
solusi solusi parameter atau @ Thor atau yang lain.sed -r
.sed -r 's/(.*)-(.*)-/\1 \2 /')
.Anda juga bisa menangani ini dengan ekspansi parameter bash :
Keluaran:
sumber
Sesuatu seperti ini bekerja untuk saya, walaupun saya yakin ada cara yang lebih baik
sumber
bash
fitur ekspansi parameter, yang berfungsi dengan baik jika OP juga menggunakanbash
. Akan ada keseimbangan halus antara keterbacaan (sampai menjadi sangat verbose) dan menggunakan alat yang tepat, tetapi lebih sering daripada tidak menggunakan alat yang tepat menang.