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가 필터와 변환을 직접 수행합니다.