Bash menghapus pertama dan karakter terakhir dari string
Aku punya string seperti itu:
|abcdefg|
Dan aku ingin mendapatkan string baru yang disebut di bagaimanapun (seperti string2) dengan string asli tanpa dua karakter |
di awal dan di akhir itu sehingga saya akan memiliki ini:
abcdefg
Mungkin di bash?
101
10
Yang dapat anda lakukan
Atau jika panjang string adalah konstan, yang dapat anda lakukan
Juga, ini harus bekerja
Juga ini
Berikut ini's solusi yang independen dari panjang string (bash):
Pergi beberapa tulisan yang tercantum di sini tampaknya cara yang paling sederhana untuk melakukannya adalah:
edit: bekerja pada ubuntu dengan bash 4.2; tidak bekerja pada centOS dengan bash 4.1
Cara lain adalah dengan menggunakan
kepala
&ekor
perintah:Dan satu lagi:
Anda juga dapat menggunakan sed untuk menghapus | tidak hanya referensi simbol itu sendiri tetapi menggunakan posisi sebagai referensi dalam:
Mana ':' adalah pembatas (anda dapat menggantinya dengan / atau setiap karakter tidak dalam permintaan, ada tanda-tanda berikut s akan melakukan itu) di Sini ^ (caret) berarti pada awal masukan string dan $ (dolar) berarti di akhir. Yang . (titik) itu's setelah karet dan satu yang's sebelum tanda dolar mewakili satu karakter. Jadi dengan kata lain kita menghapus pertama dan karakter terakhir. Di pikiran ini akan menghapus semua karakter bahkan jika | it's tidak hadir dalam string.
EX:
fungsi shell
Sedikit lebih verbose pendekatan, tetapi bekerja pada setiap jenis pertama dan karakter terakhir, doesn't harus sama. Ide dasar adalah bahwa kita mengambil variabel, membaca karakter demi karakter, dan menambahkan hanya orang-orang kita ingin variabel baru
Berikut ini's bahwa seluruh ide diformat ke dalam fungsi bagus
Kecil dan universal solusi:
Khusus dalam kasus ini dan memungkinkan bahwa '|' karakter yang mungkin ada atau tidak:
$ string="|abcdefg|" $ string="${string#?}" && string="${string%%?}" $ echo "$string" abcdefg
Dari http://tldp.org/LDP/abs/html/parameter-substitution.html
Anda dapat menggunakan ini:
Dengan baris kode, anda menghapus semua |->(pipa) dalam string.