![문자가 나타날 때까지 탭, 개행, 캐리지 리턴을 제거합니다.](https://linux55.com/image/85805/%EB%AC%B8%EC%9E%90%EA%B0%80%20%EB%82%98%ED%83%80%EB%82%A0%20%EB%95%8C%EA%B9%8C%EC%A7%80%20%ED%83%AD%2C%20%EA%B0%9C%ED%96%89%2C%20%EC%BA%90%EB%A6%AC%EC%A7%80%20%EB%A6%AC%ED%84%B4%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%A9%EB%8B%88%EB%8B%A4..png)
레코드 구분 기호가 .인 CSV 파일이 있습니다 ,\n
. 열 중 하나에 제거하려는 탭과 새 행이 포함될 수 있습니다. \t\n\r
레코드 구분 기호가 나타날 때까지 이러한 문자( )를 어떻게 사용 및/또는 제거할 수 있습니까 ?sed
awk
답변1
여기 있어요:
cat input_file | tr -d '\r\t' | sed ': loop_start; /,$/b; N; s/\n//; b loop_start'
설명하다:
tr
-d
( ) 전체\r
및 문자를 삭제하는데 사용됩니다\t
.- 그런 다음 sed 루프(
: loop_start; ...; b loop_start
) 및 - 모든 행(
N
) 을 연결하고 - 개행 문자 제거(
s/\n//
) - 레코드 구분 기호(
/,$/
)를 찾을 때까지 b
다음 입력 줄로 스크립트를 다시 시작하는 스크립트 끝( )으로 분기합니다 .