psv 파일에서 줄 구분 기호 제거

psv 파일에서 줄 구분 기호 제거

다른 데이터 소스에서 데이터를 가져오고 있는데 거의 문제가 없습니다. 그 중 하나는 텍스트 필드에서 나옵니다. 사용자가 텍스트 열에서 Enter 키를 누르면 내보내기가 이를 줄 끝으로 처리합니다. 그러면 데이터가 아래와 같이 표시됩니다.

"abc"|"def"|12/28/2019|"hello world"|$
"abc"|"def"|12/28/2019|"Nice$ 
weather"|$

니스 후에 선 구분 기호를 제거하고 니스 후에 날씨를 이동할 수 있는 방법이 있습니까?

"abc"|"def"|12/28/2019|"hello world"|$
"abc"|"def"|12/28/2019|"Niceweather"|$

파이프 뒤의 선 구분선을 제외하고 제거하려고 하는데 어떻게 해야 할지 모르겠습니다. 도와주세요?

답변1

다음 변형을 사용할 수 있습니다39. 줄이 백슬래시 "\"로 끝나면 다음 줄에 추가합니다.~에서Sed 한 줄 설명, 1부: 파일 간격, 번호 매기기, 텍스트 변환 및 교체

\이전 줄이 다음으로 끝날 때 참여하고 싶지 않습니다.확실히다음으로 끝납니다 |.

$ cat -A file.psv
"abc"|"def"|12/28/2019|"hello world"|$
"abc"|"def"|12/28/2019|"Nice$
weather"|$

그 다음에

$ sed -e :a -e '/|$/!N; s/\n//; ta' file.psv | cat -A
"abc"|"def"|12/28/2019|"hello world"|$
"abc"|"def"|12/28/2019|"Niceweather"|$

파일에 DOS 스타일 CRLF 줄 끝이 있는 경우

$ cat -A file.psv
"abc"|"def"|12/28/2019|"hello world"|^M$
"abc"|"def"|12/28/2019|"Nice^M$
weather"|^M$

그런 다음 명령을 다음으로 변경하여 이를 고려할 수 있습니다.

sed -e :a -e '/|\r$/!N; s/\r\n//; ta' file.psv

파일을 제자리에서 편집하려면 백업을 추가 -i하거나 저장하세요. -i.bak파일을 Unix 줄 끝으로 변환하려면 다음을 추가하십시오.-e 's/\r$//'

sed -i.bak -e :a -e '/|\r$/!N; s/\r\n//; ta' -e 's/\r$//' file.psv

관련 정보