문자가 나타날 때까지 탭, 개행, 캐리지 리턴을 제거합니다.

문자가 나타날 때까지 탭, 개행, 캐리지 리턴을 제거합니다.

레코드 구분 기호가 .인 CSV 파일이 있습니다 ,\n. 열 중 하나에 제거하려는 탭과 새 행이 포함될 수 있습니다. \t\n\r레코드 구분 기호가 나타날 때까지 이러한 문자( )를 어떻게 사용 및/또는 제거할 수 있습니까 ?sedawk

답변1

여기 있어요:

cat input_file | tr -d '\r\t' | sed ': loop_start; /,$/b; N; s/\n//; b loop_start'

설명하다:

  1. tr-d( ) 전체 \r및 문자를 삭제하는데 사용됩니다 \t.
  2. 그런 다음 sed 루프( : loop_start; ...; b loop_start) 및
  3. 모든 행( N) 을 연결하고
  4. 개행 문자 제거( s/\n//)
  5. 레코드 구분 기호( /,$/)를 찾을 때까지
  6. b다음 입력 줄로 스크립트를 다시 시작하는 스크립트 끝( )으로 분기합니다 .

관련 정보