기본적으로 /etc/group의 사용자 목록이 있습니다. 기본적으로 해당 행을 하나의 열로 형식화하고 싶습니다. 사용자만 필요합니다. 따라서 필드가 다음과 같은 경우:
bob,john,jane,sam,joyce
그럼 난 이렇게 생겼으면 좋겠어
bob
john
jane
sam
joyce
나는 그 반대를 수행하는 방법을 알고 있지만 이런 유형은 아닙니다.
답변1
sed로 이 작업을 수행할 수 있습니다.
sed 's/,/\n/g'
이는 모든 항목을 ,
개행 문자로 대체합니다. g
sed가 첫 번째 항목만 교체하는 대신 한 줄에 있는 모든 항목을 교체하도록 합니다.
답변2
제안된 태그를 사용하여 답변하려면:
세게 때리다:
$ IFS=, read -a names <<< "bob,john,jane,sam,joyce"
$ printf "%s\n" "${names[@]}"
bob
john
jane
sam
joyce
이상한:
$ echo "bob,john,jane,sam,joyce" | awk -F, -v OFS="\n" '{$1=$1; print}'
bob
john
jane
sam
joyce
비트 $1=$1
는 출력 필드 구분자를 사용하여 현재 레코드를 다시 쓰는 이상한 관용구입니다. 이는 일부 필드가 수정되지 않으면 발생하지 않습니다.
답변3
답변4
awk를 사용하고 싶다면(다음과 유사)OFS로 구분된 AWK로 모든 필드를 인쇄합니다.):
echo "bob,john,jane,sam,joyce" | awk 'BEGIN {FS=","; OFS="\n"} {$1=$1; print $0}'