콜론으로 구분된 파일을 다른 파일로 출력합니다.

콜론으로 구분된 파일을 다른 파일로 출력합니다.

다음 샘플 파일이 있습니다.

root:server1:2014-12-12:x:Open:adm bin daemon lp mail other root sys users
sectmp:server1:2014-12-12:x:Open:users
smbnull:server1:2014-12-12:x:Locked:ids
sav:server1:2014-12-12:x:Locked:sav users
sshd:server1:2014-12-12:x:Locked:sshd
sys:server1:2014-12-12:x:Locked:sys
systemp:server1:2014-12-12:x:Open:bin sys users

여러 그룹에 속한 각 로그인 계정을 별도의 줄에 배치하는 새 파일을 만들고 싶습니다. 예를 들면 다음과 같습니다.

root:server1:2014-12-12:x:Open:adm 
root:server1:2014-12-12:x:Open:bin 
root:server1:2014-12-12:x:Open:daemon 
root:server1:2014-12-12:x:Open:lp 
root:server1:2014-12-12:x:Open:mail 
root:server1:2014-12-12:x:Open:other 
root:server1:2014-12-12:x:Open:root 
root:server1:2014-12-12:x:Open:sys 
root:server1:2014-12-12:x:Open:users
sectmp:server1:2014-12-12:x:Open:users
smbnull:server1:2014-12-12:x:Locked:ids
sav:server1:2014-12-12:x:Locked:sav 
sav:server1:2014-12-12:x:Locked:users
sshd:server1:2014-12-12:x:Locked:sshd
sys:server1:2014-12-12:x:Locked:sys
systemp:server1:2014-12-12:x:Open:bin 
systemp:server1:2014-12-12:x:Open:sys 
systemp:server1:2014-12-12:x:Open:users

답변1

이는 다음을 사용하여 수행할 수 있습니다 awk.

awk -F: -v OFS=: '{split ($NF, groups, " "); $NF=""; for (i in groups) {printf "%s%s\n", $0, groups[i]}}'

필드(예: in $NF="") 에 할당하면 $0의 인스턴스가 FS로 대체 되므로 에 OFS할당해야 합니다 . 출력 순서를 기대하지 마십시오. 그룹 필드는 무작위로 출력됩니다. 나중에 필요하시면 이용해 주세요.:OFSsort

관련 정보