Saya menerima dari pengguna jalur file absolut tertentu, dan saya ingin membuat variabel yang akan menjadi string yang tidak hanya menyertakan PERTAMA dua komponen jalur file, tetapi tanpa mencetaknya atau apa pun.
Misalnya, jalur absolut dapat berupa:
/home/myusername/folder1/folder2/folder3
Dan itu disimpan di "target_path", dan saya ingin "mydir" menjadi hanya:
/folder1/folder2/folder3
Saya mencoba menggunakan perintah cut dengan cara yang berbeda tetapi tidak berhasil.
Jawaban yang Diterima:
Menggunakan manipulasi string bash:
$ a=/home/myusername/folder1/folder2/folder3
$ echo "${a#/*/*/}"
folder1/folder2/folder3
Jadi, string yang Anda inginkan adalah (menambahkan kembali garis miring):
b="/${a#/*/*/}"
Untuk variabel a
, ${a#foo}
akan menghapus pencocokan string terpendek foo
dari mulai dari a
. Jadi, kami menghapus string terpendek yang berisi tiga /
(termasuk garis miring di jalur), untuk menghapus dua komponen pertama dari jalur absolut.