GNU/Linux >> Linux の 問題 >  >> Linux

Bashの文字列/配列から一意の要素の配列を作成するにはどうすればよいですか?

文字列「123 2 1」または配列[1,2,3,2,1]がある場合、一意の値を選択するにはどうすればよいですか。つまり

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

または

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

uniqに似ていますが、uniqは行内のパターンではなく、行全体で機能するようです…

承認された回答:

GNU awkを使用 (これも元の順序を保持します)

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

読む bashに 配列

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. Json配列からBash配列に1つのフィールドを解析しますか?

  2. `declare -a A`はBashで空の配列`a`を作成しますか?

  3. 配列のBash配列?

  1. Bashスクリプトで文字列を分割する方法

  2. Bashの配列から一意の値を取得するにはどうすればよいですか?

  3. bash のテキスト文字列を配列に変換する

  1. bashでリストから要素を取得する方法は?

  2. bash - 関数から配列を返し、内容を表示する

  3. bashで配列値をシフトする方法