개행 문자를 파이프 및 개행 문자로 바꾸기

개행 문자를 파이프 및 개행 문자로 바꾸기

을 사용하고 있습니다 ksh.

temp.txt파이프로 구분된 데이터가 포함된 파일이 있습니다.

one|two|three|four|five
abc|def|pqr|lmn|xyz

예제에서 알 수 있듯이 레코드는 마지막 열의 데이터 값 다음에 개행 문자로 끝납니다.

그러나 레코드가 다음과 같이 파이프 구분 기호와 개행 문자로 끝나기를 원합니다.

one|two|three|four|five|
abc|def|pqr|lmn|xyz|

다음 명령을 시도했지만 여전히 성공하지 못했습니다.

tr '\n' '|\n' < temp.txt

그리고

sed -i 's/\n/|\n/g' temp.txt

내가 뭐 놓친 거 없니?

답변1

라인을 연결하지 않으면 패턴 공간 \n에 나타나지 않습니다 . 라인 끝 앵커는 입니다 .sed$

따라서 GNU sed의 경우:

sed -i 's/$/|/' temp.txt

답변2

당신은 그것을 사용할 수 있습니다 paste:

$ :|paste -d'|' file - > new_file
one|two|three|four|five|
abc|def|pqr|lmn|xyz|

또는 perl:

perl -i.bak -ple '$_.="|"' file

답변3

sedGNU를 사용하면 줄 끝을 다음으로 바꿀 수 있습니다 .|

sed -i 's/$/|/' temp.txt

이것은 줄의 끝과 일치하고 로 "대체"되지만 |, 물론 줄은 여전히 ​​끝나서 그 값을 유지합니다.\n

답변4

GNU를 사용할 수 있습니다 sed.

sed -i 's/.*/&|/' file

특수 문자는 &RHS의 일치 패턴에 해당합니다.

관련 정보