내 줄 nextermCensus.lis
에는 개행 문자가 포함되어 있습니다. 저는 첫 번째 줄에만 관심이 있습니다. 개행 문자를 제거하고 싶습니다. 하지만 작동하지 않습니다. 그래서 두 번째 방법을 사용하여 제거해야 합니다. $(echo $census_day | tr -d '\n')
예상대로 작동합니다. 하지만 저는 한 줄로 하는 걸 정말 좋아해요.
census_day=`head -1 /dr4/home/operbat/batches/nextermCensus.lis | tr -d '\n'`
census_day=$(echo $census_day | tr -d '\n')
답변1
주문하다:
bla=`head -1 filename`
줄 바꿈이 제거되었습니다. 이 echo
명령은 개행 문자를 다시 추가합니다.
노력하다:
echo "$bla\c"
(POSIX 호환 에코를 사용하는 경우) 이 표시됩니다 $bla
.
답변2
기본적으로 echo
후행 개행 문자는 인쇄하라는 문자열이나 변수에 추가됩니다. 첫 번째 명령은 완벽하게 작동합니다. 거기에는 개행 문자가 없습니다. 명령 대체( `...`
또는 이에 상응하는 최신 명령 $(...)
)는 모든 후행 개행 문자를 제거합니다. 변수를 사용하려고 하는 경우에만 추가됩니다 echo
.
예를 들어, 다음 파일이 제공됩니다.
$ cat foo.txt
a
b
c
다음을 사용하여 개행 문자를 제외한 첫 번째 줄을 저장할 수 있습니다 head
.
$ census_day=`head -n 1 foo.txt`
이제 이 작업을 수행하면 개행 문자가 표시되지만 , 또는 (이를 지원하는 s의 경우 ) echo
을 사용하면 다음 과 같은 내용 이 표시되지 않습니다. printf
echo -n
echo
$ printf %s "$census_day" | od -tc
0000000 a
0000001