tr -d는 캐리지 리턴과 함께 작동하지 않습니다.

tr -d는 캐리지 리턴과 함께 작동하지 않습니다.

변수에서 \n을 제거하고 싶습니다. "tr -d 사용"이라는 답변을 많이 찾았지만 tr -d효과가 없었습니다.

echo "$test" | od -c
0000000   4   4   2   5   2  \n
0000006

그런 다음 사용합니다.tr -d

test2=$(echo $test | tr -d '\n')

하지만 아무것도 변하지 않았어

echo "$test2" | od -c
0000000   4   4   2   5   2  \n
0000006

답변1

를 사용하면 예상대로 (예: 개행 문자) tr -d '\n'가 제거됩니다 . \n그러나 echo명령을 사용하여 이를 확인하고 있습니다. Echo명령 자체는 입력 문자열 끝에 개행 문자를 넣으므로 예상되는 출력이 표시되지 않습니다.

변수를 확인하려면 다음 명령 세트를 사용하십시오.

test2=$(echo "$test" | tr -d '\n')
printf "%s" $test2 | od -c
echo -n $test2 | od -c

스크립트 출력:

0000000   h   e   l   l   o
0000005
0000000   h   e   l   l   o
0000005

참고: echo -n: echo 매뉴얼 페이지에서: -n은 후행 줄 바꿈을 출력하지 않습니다. printf: 끝에 \n을 추가하지 않습니다.

답변2

echo\n기본값은 추가입니다. -n생략하는 데 사용됨

[6]root@lab7:~> echo 'lol' |od -c
0000000   l   o   l  \n
0000004
[6]root@lab7:~> echo -n 'lol' |od -c
0000000   l   o   l
0000003

관련 정보