리눅스

리눅스

sed 특정 위치의 행을 빠르게 삭제하는 데 사용합니다.

sed '1d'
sed '5d'

하지만 파일의 마지막 줄을 삭제하고 싶은데 줄 수를 모른다면 어떻게 해야 할까요( wc다른 방법을 사용하여 그렇게 할 수 있다는 것을 알고 있습니다).

head현재 이를 위해 tail해결 방법이 사용되고 결합되어 있습니다 . wc여기에 빠른 반전이 있습니까?

답변1

sed가 $마지막 줄이므로 마지막 줄을 삭제하세요.

sed '$d' <file>

파일 하단에서 여러 줄을 제거하는 방법을 포함하도록 업데이트되었습니다.

tac <file> | tail -n +3 | tac > <new_file>
  • tac파일을 뒤로 읽기( cat뒤로)
  • tail -n +3라인 n부터 시작하여 입력 읽기
  • tac입력을 읽고 순서를 원래 순서로 되돌립니다.

답변2

$ 마지막 줄:

sed '$d' file

답변3

cat file.txt | head -n -1 > new_file.txt

file.txt마지막 줄 ( EOF, 또는 로 \n끝나는 경우 EOF)에 따라 이 명령 뒤의 줄 수는 ( 없는 경우 발생 ) new_file.txt과 동일할 수 있습니다 . 어떤 경우든 마지막 줄의 내용은 다음과 같습니다. 삭제됩니다.file.txt\n

또한 두 번째(중간) 파일을 사용해야 한다는 점에 유의하세요. 동일한 파일을 캣하고 리디렉션하면 삭제됩니다.

답변4

리눅스

$는 마지막 줄이고 d는 삭제를 의미합니다.

sed '$d' ~/path/to/your/file/name

애플 시스템

sed -i와 동일

sed -i '' -e '$ d' ~/path/to/your/file/name

관련 정보