bagaimana cara mendapatkan elemen dari daftar di bash?


40

Berikut adalah daftar:

List = "abcd 1234 jvm something"

Bagaimana cara mendapatkan elemen kedua "1234" tanpa mengulang semua daftar?

Jawaban:


50

tidak ada spasi di antara tanda sama dengan

$ List="abcd 1234 jvm something"
$ set -- $List
$ echo $2
1234

Beberapa cara lain, meski tidak seefisien menggunakan internal shell

$ echo $List | cut -d" " -f2
1234
$  echo $List | awk '{print $2}'
1234
$ echo $List | sed 's/^.[^ \t]* //;s/ .*//'
1234
$ echo $List | tr " " "\n"|sed -n '2p'
1234

Terima kasih. Apakah Anda mau memberikan komentar dalam kode ini?
— SpawnST

1
Maksud saya baris kedua.
— SpawnST

17
@Spawn set -- $somethingperpecahan $somethingdi $IFSkarakter (dengan spasi default) dan penerima bagian split untuk variabel posisi $1, $2...
— Benjamin Bannier

43

Hanya untuk melengkapi jawaban ghostdog: Anda juga bisa memasukkan $Listelemen ke dalam array dan mengakses elemen daftar tertentu dari sana

List="abcd 1234 jvm something"
arr=($List)
echo ${arr[1]}

Perhatikan bahwa indeks array dihitung 0,1,2, ....

Ini memiliki keuntungan tidak mencemari lingkungan shell dengan terlalu banyak variabel baru.


Itu bagus. :-)
— SpawnST

1
tidak perlu echo: arr=($List)
— user31894

@ghostdog mungkin perilaku kompulsif, diedit.
— Benjamin Bannier

@BenjaminBannier, bagaimana Anda bisa memilih beberapa elemen. Apakah ada beberapa sintaks seperti $ {arr [1,2,3]} $ (bukan ini, sejak saya mencoba, tapi seperti ini) atau apakah saya perlu menggunakan for loop.
— Kvothe
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.