特定の識別子リストのLDAPデータの変更

特定の識別子リストのLDAPデータの変更

次の内容を含むファイルがあります。数行の長さは15で、残りの行は15未満です。

AAAAAAAAAAAAA
BBBBBBBB
cccc

次の方法で出力が必要です。

購読者を削除する:

AAAAAAAAAAAAA

存在する

IMSI=AAAAAAAAAAAAA,dc=imsi,ou=NPSD,serv=CSPS,ou=servCommonData,dc=te

購読者を削除する:BBBBBBBB

MSISDN=BBBBBBBB,dc=msisdn,ou=NPSD,serv=CSPS,ou=servCommonData,dc=te

購読者を削除する:cccc

MSISDN=cccc,dc=msisdn,ou=NPSD,serv=CSPS,ou=servCommonData,dc=te

ベストアンサー1

使用幸せ(以前のPerl_6)

条件文が必要です。

~$ raku -ne ' if ($_.chars == 15) {print "IMSI=$_,dc=imsi,"} else {print "MSISDN=$_,dc=msisdn,"}; put "ou=NPSD,serv=CSPS,ou=servCommonData,dc=te";'  file

#or

~$ raku -ne '($_.chars == 15) ?? print "IMSI=$_,dc=imsi," !! print "MSISDN=$_,dc=msisdn,"; put "ou=NPSD,serv=CSPS,ou=servCommonData,dc=te";'  file  

入力例(上部に15文字を追加zzzzzzzzzzzzzzz):

zzzzzzzzzzzzzzz
AAAAAAAAAAAAA
BBBBBBBB
cccc

出力例:

IMSI=zzzzzzzzzzzzzzz,dc=imsi,ou=NPSD,serv=CSPS,ou=servCommonData,dc=te
MSISDN=AAAAAAAAAAAAA,dc=msisdn,ou=NPSD,serv=CSPS,ou=servCommonData,dc=te
MSISDN=BBBBBBBB,dc=msisdn,ou=NPSD,serv=CSPS,ou=servCommonData,dc=te
MSISDN=cccc,dc=msisdn,ou=NPSD,serv=CSPS,ou=servCommonData,dc=te

上記の質問の問題の1つは、OPの入力例で提供される最も長い行が13文字にすぎないことです。上記のコードは、各入力行に対して1行の戻り値を提供します。-neRakuの「非自動印刷コマンドラインフラグ」を使用してください。この$_変数はRaku(およびPerl)の「テーマ変数」です。 Rakuの文は終了行をprint追加しません。\nput

必要に応じて追加の「サブスクライバを削除」行を追加するように上記の出力を変更します。

https://docs.raku.org/言語/control#index-entry-control_flow_if-if
https://docs.raku.org/routine/%3F%3F%20!
https://raku.org

おすすめ記事