GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Membuat Array Elemen Unik Dari String/array Di Bash?

Jika saya memiliki string “1 2 3 2 1” – atau array [1,2,3,2,1] – bagaimana saya bisa memilih nilai unik, mis.

"1 2 3 2 1" produces "1 2 3" 

atau

[1,2,3,2,1] produces [1,2,3]

Mirip dengan uniq tetapi uniq tampaknya bekerja di seluruh baris, bukan pola dalam satu baris…

Jawaban yang Diterima:

Dengan GNU awk (ini juga mempertahankan pesanan asli)

printf '%sn' "1 2 3 2 1" | awk -v RS='[[:space:]]+' '!a[$0]++{printf "%s%s", $0, RT}'
1 2 3 

Untuk read menjadi bash larik

read -ra arr<<<$(printf '%sn' "1 2 3 2 1" |
 awk -v RS='[[:space:]]+' '!a[$0]++{printf "%s%s", $0, RT}')
printf "%sn"  "${arr[@]}"
1
2
3

Linux
  1. Apakah `deklarasikan -a A` Membuat Array Kosong `a` Di Bash?

  2. Bash Array Dari Array?

  3. Bash Array Dengan Contoh

  1. Konversikan string teks dalam bash ke array

  2. bagaimana cara mendapatkan elemen dari daftar di bash?

  3. Buat array dengan semua antarmuka jaringan di bash

  1. Parsing Satu Bidang Dari Json Array Ke Bash Array?

  2. cara menggeser nilai array di bash

  3. Ekstrak jalur yang hilang dari bash array jalur