쉼표로 구분된 행을 1개의 열로 변환

쉼표로 구분된 행을 1개의 열로 변환

기본적으로 /etc/group의 사용자 목록이 있습니다. 기본적으로 해당 행을 하나의 열로 형식화하고 싶습니다. 사용자만 필요합니다. 따라서 필드가 다음과 같은 경우:

bob,john,jane,sam,joyce

그럼 난 이렇게 생겼으면 좋겠어

bob
john
jane
sam
joyce

나는 그 반대를 수행하는 방법을 알고 있지만 이런 유형은 아닙니다.

답변1

sed로 이 작업을 수행할 수 있습니다.

sed 's/,/\n/g'

이는 모든 항목을 ,개행 문자로 대체합니다. gsed가 첫 번째 항목만 교체하는 대신 한 줄에 있는 모든 항목을 교체하도록 합니다.

답변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

다음에서 찾기 및 바꾸기를 사용하여 이 작업을 수행할 수 있습니다 vim.

:%s/,/\r/g

보다이것질문...

답변4

awk를 사용하고 싶다면(다음과 유사)OFS로 구분된 AWK로 모든 필드를 인쇄합니다.):

echo "bob,john,jane,sam,joyce" | awk  'BEGIN {FS=","; OFS="\n"} {$1=$1; print $0}'

관련 정보