タグ付けされた質問 「list-processing」

30
Bashの$ PATH変数からパスを削除する最もエレガントな方法は何ですか?
より一般的には、Bash環境変数のコロンで区切られたリストからアイテムを削除するにはどうすればよいですか? 数年前に、より高度な形式のBash変数展開を使用する簡単な方法を見たと思ったのですが、そうだとすればそれを見失ってしまいました。Googleをすばやく検索したところ、関連する結果は驚くほど少なく、私が「シンプル」または「エレガント」と呼ぶものは見つかりませんでした。たとえば、sedとawkをそれぞれ使用する2つのメソッド: PATH=$(echo $PATH | sed -e 's;:\?/home/user/bin;;' -e 's;/home/user/bin:\?;;') PATH=!(awk -F: '{for(i=1;i<=NF;i++){if(!($i in a)){a[$i];printf s$i;s=":"}}}'<<<$PATH) 簡単なものは何もありませんか?Bashのsplit()関数に類似したものはありますか? 更新: わざとあいまいな質問をお詫びする必要があるようです。私は特定のユースケースを解決することよりも、良い議論を引き起こすことに関心がありませんでした。幸い、私はそれを手に入れました! ここにはいくつかの非常に巧妙なテクニックがあります。最後に、ツールボックスに次の3つの関数を追加しました。マジックはpath_removeで発生します。これは、主にMartin YorkのawkRS変数の巧妙な使用に基づいています。 path_append () { path_remove $1; export PATH="$PATH:$1"; } path_prepend () { path_remove $1; export PATH="$1:$PATH"; } path_remove () { export PATH=`echo -n $PATH | awk -v RS=: -v ORS=: …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.