csvファイルの値の並べ替え

csvファイルの値の並べ替え

次の情報を含むcsvファイルがあり、合計結果を結合し、aws rds describe-db-instancesjq aws rds describe-reserved-db-instancesを使用して結果を解析してcsvファイルを作成し、pastecsvファイルを一緒に保存しました。

DB Instance Identifier,Reservation ID,State
alpha-db-dev,alpha-db-dev-26aug2022,active
alpha-db-prod,alpha-db-prod-26aug2022,active
alpha-db-staging,alpha-db-staging-26aug2022,active
beta-db-dev-primary,beta-db-dev-8dec2021,active
beta-db-prod-primary,charlie-db-dev-8dec2021,active
beta-db-prod-replica,charlie-db-staging-loadtest-8dec2021,active
beta-db-staging-primary,,
charlie-db-dev,,
charlie-db-prod-dms,,
charlie-db-prod-dms-replica,,
charlie-db-staging,,
charlie-db-staging-loadtest,,

私がやりたいことは、2番目の列の最初の数単語を最初の列の最初の数単語と一致させることです。

結果は次のようになります

DB Instance Identifier,Reservation ID,State
alpha-db-dev,alpha-db-dev-26aug2022,active
alpha-db-prod,alpha-db-prod-26aug2022,active
alpha-db-staging,alpha-db-staging-26aug2022,active
beta-db-dev-primary,beta-db-dev-8dec2021,active
beta-db-prod-primary,,
beta-db-prod-replica,,
beta-db-staging-primary,,
charlie-db-dev,charlie-db-dev-8dec2021,active
charlie-db-prod-dms,,
charlie-db-prod-dms-replica,,
charlie-db-staging,,
charlie-db-staging-loadtest,charlie-db-staging-loadtest-8dec2021,active

基本的に私が望むのはcsvファイルで一致するものcharlie-db-staging-loadtestですcharlie-db-staging-loadtest-8dec2021

次のタスクと、データベースインスタンス識別子と予約済みID列のテキストを一致させる方法を理解できませんでした。さらに重要なのは、一致するテキストを同じ行に移動する方法です。だから私はこれまでこの問題を解決しようとしませんでした。

bashで動作する限り、どのコマンドでも喜んで使用します。これに合わせるには、あまりにも大きなデータが含まれているかなり似ていますが、同じではないcsvファイルにコマンドを適用するので、コマンドを分析していただきありがとうございます。

私はsedとawkを使ってきましたが、まだ正しく動作していないようです。しかし、おそらくここで間違ったコマンドを考えているようです。どんな洞察力でも役に立ちます。

とても感謝しています!

ベストアンサー1

@torは本当に正しいですしかし、あなたや同様の問題を抱えている他の人が後で自分でこれらのことを行う方法を学ぶことができるようにこれをしたい場合は、awkと2パスを使用して要求することを行う方法を次に示します。

$ cat tst.awk
BEGIN { FS=OFS="," }
NR == FNR {
    id = $2
    sub(/-[^-]+$/,"",id)
    vals[id] = $2 OFS $3
    next
}
{ print (FNR>1 ? $1 OFS vals[$1] : $0) }

$ awk -f tst.awk file file
DB Instance Identifier,Reservation ID,State
alpha-db-dev,alpha-db-dev-26aug2022,active
alpha-db-prod,alpha-db-prod-26aug2022,active
alpha-db-staging,alpha-db-staging-26aug2022,active
beta-db-dev-primary,
beta-db-prod-primary,
beta-db-prod-replica,
beta-db-staging-primary,
charlie-db-dev,charlie-db-dev-8dec2021,active
charlie-db-prod-dms,
charlie-db-prod-dms-replica,
charlie-db-staging,
charlie-db-staging-loadtest,charlie-db-staging-loadtest-8dec2021,active

私はそれが何をしているのかはかなり明白だと思いますが、マニュアルページを読んで、インターネット検索を行い、print変数値を追跡するステートメントを追加するなどしてもそれを理解できない場合(通常はawkについてもっと学ぶことができるように)お願いします。コメントに具体的な質問がある場合は、喜んで回答いたします。 awkについて全体的に学ぶには、Arnold Robbinsが書いたEffective AWKプログラミング、第5版を読んでください。

おすすめ記事