텍스트 파일의 내용을 자르는 방법은 무엇입니까?

텍스트 파일의 내용을 자르는 방법은 무엇입니까?

텍스트 파일의 시작과 끝 부분에 있는 모든 "공백" 문자(있는 경우 \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

관련 정보