특정 식별자 목록에 대한 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

#또는

~$ 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

위 질문의 문제점 중 하나는 OP의 예제 입력에서 제공되는 가장 긴 줄이 13자에 불과하다는 것입니다. 위의 코드는 각 입력 줄에 대해 한 줄의 반환을 제공합니다. -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

답변2

귀하의 질문에 제공된 예제 입력을 고려하면 다음과 같습니다.

$ head file?
==> file1 <==
AAAAAAAAAAAAA
BBBBBBBB
cccc

==> file2 <==
IMSI=AAAAAAAAAAAAA,dc=imsi,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

이것이 필요한 것이 아니라면 awk를 사용하십시오.

$ awk -F'[=,]' 'NR==FNR{bad[$0]; next} !($2 in bad)' file1 file2
$

그런 다음 작동하지 않는 경우를 포함하여 보다 대표적인 입력/출력 예제를 제공하도록 질문을 편집하십시오.

관련 정보