各行の最初の単語を選択し、bashスクリプトで配列にプロパティを割り当てる方法

各行の最初の単語を選択し、bashスクリプトで配列にプロパティを割り当てる方法

「:」文字の前にあるテキストファイルの各行の最初の単語を選択して、配列(1行1スロット)に出力するbashスクリプトを作成したいと思います。

今私はこれを持っています:

while read p; 
do
  arr+=$p | sed -r 's///'
done <test.txt

sed条件に何を入れるべきかわかりません。

この正規表現があります。

/^([^:])+/gm

ベストアンサー1

サブシェルとsedは不要で、パラメータ拡張のみを使用できます。

while read p ; do
  arr+=( "${p%%:*}" )
done < test.txt

1つのコマンドですべての部分文字列を削除する方が高速です。

while read p ; do
    arr+=("$p")
done < test.txt
arr=("${arr[@]%%:*}")

おすすめ記事