配列から特定の文字を含まない要素を削除します。

配列から特定の文字を含まない要素を削除します。

c_arrテーブルエイリアスを持つテーブル列を含む配列があります。ただし、配列には実際には列ではなく一部の要素があるため、型はありませんalias.column_name

含まれていないアイテムを削除する必要があります.。どうすればいいですか?

配列は次の文を使用して生成されます。

c_arr=($echo $(grep -io "\b$alias.\w[a-zA-Z_0-9]*" $output_file))

上記の行には別の問題があります。$alias.エイリアスの後にドットを使用して検索しても、配列はドットをc_arr含まない他の値を取得します。配列の例の値は次のとおりです。

cab.SYSTEM_NAME
cab.row_id
cab.name
cabxa
cabxa
cab.x_sys_name
cab.status_Cd
cab.LAST_UPD

修正する:

今の問題は、c_arr配列に点要素と非点要素がある場合、配列から文字を含まない要素を削除する方法です。.内容はc_arr次のとおりです。

cab.SYSTEM_NAME
cab.row_id
cab.name
cabxa
cabxa
cab.x_sys_name
cab.status_Cd
cab.LAST_UPD

希望の出力は次のとおりです。

cab.SYSTEM_NAME
cab.row_id
cab.name
cab.x_sys_name
cab.status_Cd
cab.LAST_UPD

ベストアンサー1

これにより、次のことができます。

c_arr=$(echo $(grep -i "${alias}\." $output_file))

Bill Jetzerが述べたように、正規表現でドットをエスケープする必要があるからです。

ドットを持つすべての項目が有効であると確信している場合は、次のこともできます。

c_arr=$(echo $(grep -i \. $output_file))

おすすめ記事