Bash: 출력에서 후행 줄 바꿈 제거
Bash에서 명령을 실행할 때(구체적으로 말하면,wc -l < log.txt), 출력 뒤에 줄 바꿈이 있습니다.어떻게 없애죠?
예상 출력이 한 줄이면 출력에서 새 줄 문자를 모두 제거할 수 있습니다.에 파이프를 연결하는 것은 드문 일이 아닐 것입니다.tr유틸리티 또는 원하는 경우 Perl로:
wc -l < log.txt | tr -d '\n'
wc -l < log.txt | perl -pe 'chomp'
명령 대체를 사용하여 후행 새 줄을 제거할 수도 있습니다.
echo -n "$(wc -l < log.txt)"
printf "%s" "$(wc -l < log.txt)"
예상 출력에 여러 줄이 포함될 수 있는 경우 다음과 같은 결정을 내려야 합니다.
파일 끝에서 여러 줄의 새 문자를 제거하려면 cmd 대체를 다시 사용합니다.
printf "%s" "$(< log.txt)"
파일에서 마지막 줄 문자를 엄격하게 제거하려면 Perl:
perl -pe 'chomp if eof' log.txt
삭제할 줄바꿈 문자가 있는 것이 확실한 경우 다음을 사용할 수 있습니다.headGNU 코어유틸리티에서 마지막 바이트를 제외한 모든 항목을 선택합니다.이 작업은 매우 빨라야 합니다.
head -c -1 log.txt
또한 완전성을 위해 다음을 사용하여 새 줄(또는 다른 특수 문자)이 파일에서 어디에 있는지 빠르게 확인할 수 있습니다.cat그리고 '쇼-올' 깃발.-A달러 기호 문자는 각 줄의 끝을 나타냅니다.
cat -A log.txt
한 가지 방법:
wc -l < log.txt | xargs echo -n
마지막 새 선만 제거하려면 다음을 통과합니다.
sed -z '$ s/\n$//'
sed추가하지 않음\0구분 기호가 다음으로 설정된 경우 스트림 끝으로 이동합니다.NUL경유로-z반면에 POSIX 텍스트 파일을 만듭니다. (끝 부분에 정의됨).\n), 항상 최종 결과를 출력합니다.\n없이.-z.
예:
$ { echo foo; echo bar; } | sed -z '$ s/\n$//'; echo tender
foo
bartender
그리고 아니라고 증명하는 것은NUL추가됨:
$ { echo foo; echo bar; } | sed -z '$ s/\n$//' | xxd
00000000: 666f 6f0a 6261 72 foo.bar
여러 개의 후행 새 선을 제거하려면 다음을 통과합니다.
sed -Ez '$ s/\n+$//'
또한 Bash 변수 대체에서 빈 공간 제거를 직접 지원합니다.
testvar=$(wc -l < log.txt)
trailing_space_removed=${testvar%%[[:space:]]}
leading_space_removed=${testvar##[[:space:]]}
Bash에서 엔드 오브 라인 없이 출력을 인쇄하려면 다음과 같이 에코합니다.-n스위치를 켜다
변수에 이미 변수가 있는 경우 다음 줄이 잘린 상태로 반향합니다.
$ testvar=$(wc -l < log.txt)
$ echo -n $testvar
또는 한 줄로 수행할 수 있습니다.
$ echo -n $(wc -l < log.txt)
출력을 변수에 할당하면,bash자동으로 빈 공간 제거:
linecount=`wc -l < log.txt`
printf는 이미 다음 줄을 잘라냅니다.
$ printf '%s' $(wc -l < log.txt)
세부 정보:
- printf는 당신의 콘텐츠를 대신 인쇄할 것입니다.
%s문자열 자리 표시자. - 라인을 새로 인쇄하라고 하지 않으면 (
%s\n), 그렇지 않을 것입니다.
다른 무엇보다 참고를 위해 이것을 추가하는 것 ^_^
bash 확장 마법을 사용하여 출력에서 새 라인을 제거할 수도 있습니다.
VAR=$'helloworld\n'
CLEANED="${VAR%$'\n'}"
echo "${CLEANED}"
Awk 사용:
awk -v ORS="" '1' log.txt
설명:
- -V ORS 할당
- ORS - 출력 레코드 구분 기호가 공백으로 설정됨.새 줄(입력 레코드 구분 기호)을 ""로 대체합니다.
언급URL : https://stackoverflow.com/questions/12524308/bash-strip-trailing-linebreak-from-output
'programing' 카테고리의 다른 글
| C#에서 const와 read only의 차이점은 무엇입니까? (0) | 2023.05.01 |
|---|---|
| Git 저장소에 빈 디렉토리를 추가하려면 어떻게 해야 합니까? (0) | 2023.05.01 |
| Git에서 로컬 커밋 삭제 (0) | 2023.05.01 |
| SQL Server Profiler - 추적을 필터링하여 한 데이터베이스의 이벤트만 표시하는 방법 (0) | 2023.05.01 |
| WPF에서 수직 탭 세트를 구축하는 방법은 무엇입니까? (0) | 2023.05.01 |