후행 쉼표 제거

후행 쉼표 제거

Bash에서 후행 쉼표 세트를 제거하는 방법:

a,b,c,d,,,,
1,2,3,,,,

원하는 출력:

a,b,c,d
1,2,3

이 시도:

 grep "5628" test.csv | sed 's/,*$//g'

하지만 작동하지 않습니다. 이 파일은 원래 Windows 컴퓨터에서 가져온 것입니다.

답변1

제공한 명령을 다시 입력하세요.

grep "5628" test.csv | sed 's/,*$//g'

그러면 후행 쉼표가 제거된 "5628"과 일치하는 줄이 출력됩니다. 파일을 업데이트하지 않습니다 test.csv.

그러나 파일이 Windows 시스템에서 온 것임을 나타내므로 줄 끝은 NL이 아니라 CR/NL입니다. 결과는 줄 끝에 숨겨진 CR입니다. 명령줄이 필요합니다.

grep "5628" test.csv | sed 's/,*\r*$//'

실제로 이를 단일 명령으로 단순화할 수 있습니다.

sed -n '/5628/s/,*\r*$//p' test.csv

답변2

sed -n '/5628/ s/,*\r*$//p' test.csv

(방금 후행 혼수상태 제거를 요청한 OP가 아님) 이는 파이프라인 프로세스를 피하고 sed가 필터와 변환을 직접 수행합니다.

관련 정보