前提・実現したいこと
CentOS8でfreeradiusを構築中です。
ユーザ・パスワード・attributeが記載されているcsvファイルからfreeradiusのusers書式への日次変換処理を行おうとしています。
カンマ区切りをスペース区切りに変換するなどの簡単な置換処理はうまくいってるのですが、重複ユーザの削除に苦慮しています。
というのもcsvファイルには事情があって同一ユーザで2行以上存在している場合があります。
発生している問題・エラーメッセージ
ユーザが重複している場合は一番最後に登場する行(最下行)を採用したいと考えていますが、そのやり方がわかりませんでした。
awkコマンドで実現しようとしています。
該当のソースコード
csvファイルからカンマなどを削除して重複行を削除する直前までの状態
aaaaa Cleartext-Password:="password1", Filter-Id:="1001"
bbbbb Cleartext-Password:="password2", Filter-Id:="1002"
ccccc Cleartext-Password:="password3", Filter-Id:="1003"
ddddd Cleartext-Password:="password4", Filter-Id:="1004"
aaaaa Cleartext-Password:="password5", Filter-Id:="1005"
aaaaa Cleartext-Password:="password6", Filter-Id:="1006"
awkコマンド実行後は以下になるようにしたい
bbbbb Cleartext-Password:="password2", Filter-Id:="1002"
ccccc Cleartext-Password:="password3", Filter-Id:="1003"
ddddd Cleartext-Password:="password4", Filter-Id:="1004"
aaaaa Cleartext-Password:="password6", Filter-Id:="1006"
試したこと
一番最初に登場する行を採用する場合↓
aaaaa Cleartext-Password:="password1", Filter-Id:="1001"
bbbbb Cleartext-Password:="password2", Filter-Id:="1002"
ccccc Cleartext-Password:="password3", Filter-Id:="1003"
ddddd Cleartext-Password:="password4", Filter-Id:="1004"
については以下でできることを確認しています。
awk '!colname[$1]++{print $1 " " $2 " " $3}'
補足情報(FW/ツールのバージョンなど)
CentOS Linux release 8.2.2004
bash
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/19 09:24