Bagaimana cara menghapus karakter terakhir hanya jika ada?
memasukkan:
OpenOffice.org/m openOffice.org/ozm Pers. Pfg. phil. Prof. resp. Roonstr./m roonstr./ozm
output yang diinginkan:
OpenOffice.org openOffice.org Pers Pfg phil Prof. resp Roonstr roonstr
Saya mengerti sejauh ini bahwa hanya titik yang tersisa, tetapi sayangnya perintah sed terakhir juga menghapus huruf g
:
$ cat filename | grep "\." | cut -d"/" -f1 | sed 's/.$//'
text-processing
grep
sed
removelastdotonlyifitsthere
sumber
sumber
sed -n '/\./{s=/[^/]*$==;s/\.$//;p}
. Lagi pulagrep
+sed
akan bekerja lebih lama dari satused
.sed 's/[./]\+[^./]*$//'
Menghapus karakter hanya jika ada persis deskripsi ekspansi parameter.
Titik tidak spesial dalam kasus ini (titik khusus dalam regex).
Pola lainnya dapat dihapus dengan
%/*
:Untuk menghapus keduanya:
Tentu saja, untuk bekerja dengan file sumber lebih cepat menggunakan sed pada file.
Hanya ingat untuk mengutip titik (untuk mencocokkan secara harfiah, jika tidak berarti: karakter apa saja).
sumber
Hanya sedikit mengubah ekspresi reguler Anda: untuk keluar dari
.
Dan Anda tidak perlugrep
sumber