반응형
여러 줄을 쉼표로 구분하여 한 줄로 바꾸기 (Perl / Sed / AWK)
이 질문에 이미 답변이 있습니다.
여러 줄에 다음 데이터가 있습니다.
foo
bar
qux
zuu
sdf
sdfasdf
내가하고 싶은 것은 한 줄과 쉼표로 구분하여 변환하는 것입니다.
foo,bar,qux,zuu,sdf,sdfasdf
이를 수행하는 가장 좋은 유닉스 원 라이너는 무엇입니까?
붙여 넣기 명령 사용 :
paste -d, -s file
파일
aaa
bbb
ccc
ddd
xargs
cat file | xargs
결과
aaa bbb ccc ddd
xargs improoved
cat file | xargs | sed -e 's/ /,/g'
결과
aaa,bbb,ccc,ddd
xargs -a your_file | sed 's/ /,/g'
이것은 더 짧은 방법입니다.
달성 할 수있는 방법에는 여러 가지가 있습니다. 주로 사용하는 도구는 자신의 선호도 또는 경험에 따라 다릅니다.
tr 명령 사용 :
tr '\n' ',' < somefile
awk 사용 :
awk -F'\n' '{if(NR == 1) {printf $0} else {printf ","$0}}' somefile
입력 예제에 따라이 awk 줄이 작동합니다. (후행 쉼표 제외)
awk -vRS="" -vOFS=',' '$1=$1' file
테스트:
kent$ echo "foo
bar
qux
zuu
sdf
sdfasdf"|awk -vRS="" -vOFS=',' '$1=$1'
foo,bar,qux,zuu,sdf,sdfasdf
Perl 한 줄짜리 :
perl -pe'chomp, s/$/,/ unless eof' file
또는 더 비밀스럽고 싶다면 :
perl '-peeof||chomp&&s/$/,/' file
sed -n 's/.*/&,/;H;$x;$s/,\n/,/g;$s/\n\(.*\)/\1/;$s/\(.*\),/\1/;$p'
perl -pi.bak -e 'unless(eof){s/\n/,/g}' your_file
그러면 확장자가 .bak 인 원본 파일의 백업이 생성 된 다음 원본 파일이 수정됩니다.
반응형
'development' 카테고리의 다른 글
HTML Bold 태그의 대안 (0) | 2020.10.13 |
---|---|
패키지 이름에서 애플리케이션 이름 가져 오기 (0) | 2020.10.13 |
Bash를 사용하여 열별로 명령 출력을 분할 하시겠습니까? (0) | 2020.10.13 |
Spring Boot의 spring.jpa.open-in-view = true 속성은 무엇입니까? (0) | 2020.10.13 |
RecyclerView 항목에 잔물결 효과 추가 (0) | 2020.10.13 |