텍스트 파일의 시작과 끝 부분에 있는 모든 "공백" 문자(있는 경우 \n 포함)를 제거하고 싶습니다. (기본적으로 "file"이 큰 문자열인 경우 대부분의 프로그래밍 언어의 Trim() 함수 동작을 모방합니다).
답변1
사용 sed
:
sed -z 's/^\s*//; s/\s*$//' infile
s/^\s*//
,infile
입력 파일로 사용될 때 공백/빈 줄을 제거하십시오.s/\s*$//
infile
\n
, 를 포함하여 입력 파일 끝의 공백/빈 줄을 제거합니다infile
.
예 cat -e infile
:
$
$
$
Three blank lines above$
$
$
Two blank lines in the middle$
a blank lines below$
$
a line with trailing whitespaces $
a line with leading whitespaces$
below are two empty lines + one whitespaces then an empty line again$
$
$
$
$
산출:
Three blank lines above
Two blank lines in the middle
a blank lines below
a line with trailing whitespaces
a line with leading whitespaces
below are two empty lines + one whitespaces then an empty line again
또는 첫 번째 공백/빈 줄을 제거한 결과를 printf
인쇄 sed
하고 끝에서 빈 줄만 제거하는 명령 대체에 사용할 수 있습니다 \n
.
printf '%s' "$(sed -z 's/^\s*//' infile)"
답변2
삭제하고 싶다고 가정 해 보겠습니다.모두마지막 개행뿐만 아니라 공백과 개행도 사용할 수 있습니다 tr
.
tr -d '[[:space:]]' < file > file.trimmed
또는 더 정확하게는 다음과 같습니다.
tr -d '\t\n ' < file > file.trimmed
답변3
선행/후행 공백을 제거하고 싶다고 가정하십시오.각 행마다전체 파일이 아닌.
일부 줄에 선행 또는 후행 공백과 빈 줄이 있는 테스트 파일:
$ cat -e file
line 1$
line 2$
line 3 has trailing spaces $
$
blank line above$
정리를 위한 GNU sed 명령
$ sed -r 's/^\s+//; s/\s+$//; /^$/d' file | cat -e
line 1$
line 2$
line 3 has trailing spaces$
blank line above$
답변4
ed를 사용해 볼 수도 있지만 불행히도 표준 데비안 설치에는 포함되어 있지 않습니다.
printf '%s\n' \
'g/[^[:blank:]][^[:blank:]]*/kx' \
"'"'x,$j' \
'$s/[[:blank:]]*$//' \
'/[^[:blank:]][^[:blank:]]*/kx' \
'1,'"'"'xj' \
'1s/^[[:blank:]]*//' \
'wq' |
ed -s infile
아니면 gnu sed를 사용하세요
sed -Ezi 's/^\s+|\s+$//g;s/$/\n/' infile