sed -i '1d'는 무엇을합니까?


28

sed텍스트 파일을 조작하는 명령 이라는 것을 알고 있습니다.

내 인터넷 검색 -i에서 파일 자체에서 작업을 수행하는 것을 의미하는 것 같습니다. 맞습니까?

무엇에 대해 '1d'?

답변:


43

에서 sed:

  • -i 옵션은 입력 파일을 그 자리에서 편집합니다

  • '1d' 입력 파일의 첫 번째 줄을 제거합니다

예:

% cat file.txt 
foo
bar

% sed -i '1d' file.txt 

% cat file.txt        
bar

대부분의 -i경우, 예기치 않은 변경이 발생할 경우 원본 파일을 백업 할 수 있도록 옵션 을 사용하는 동안 백업을 수행하는 것이 좋습니다 .

예를 들어, 다음과 같은 경우 :

sed -i.orig '1d' file.txt 

원본 파일은 그대로 유지되고 file.txt.orig수정 된 파일은 그대로 유지됩니다 file.txt.


4
을 사용하지 않고 "드라 이런 (dry run)"을 수행 -i한 다음 먼저 어떤 일이 발생하는지 확인한 다음 -i실제로 파일을 변경하는 데 사용할 수 있습니다.
Baard Kopperud

15

1. a)

sed '1d' file.txt

file.txt; 의 내용을 인쇄합니다 . 첫 번째 줄을 제외하고; 표준 출력으로.


2. a)

sed -i    '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS

file.txt; 의 내용을 인쇄합니다 . 첫 번째 줄을 제외하고; 다시 file.txt; 원본을 덮어 씁니다.


b)

sed -i.back '1d' file.txt

file.txt.back변경하기 전에 원본 ( )을 백업합니다 . FreeBSD를 제외하고 sed접미사 (여기서는 .back)를 -i옵션에 첨부해야합니다 (같은 인수로 -i와 사이에 공백이 없어야 함 .back).


3. a)

sed '2d' file.txt

file.txt; 의 내용을 인쇄합니다 . 두 번째 줄을 제외하고; 표준 출력으로.
숫자를 지정하면 해당 줄이 제거됩니다.

-i플래그 와도 호환됩니다 .


3. b)

sed '1!d' file.txt

file.txt; 의 내용을 인쇄합니다 . 모든 제외 하지만 첫 번째 줄; 표준 출력으로.
(즉, 오직 첫번째 줄은 인쇄 얻는다).

-i플래그 와도 호환됩니다 .


3. c)

sed '$d' file.txt

file.txt; 의 내용을 인쇄합니다 . 마지막 줄을 제외하고; 표준 출력으로.

-i플래그 와도 호환됩니다 .


참고 : BSD 버전 (예 : macOS 표준)은 일반적으로 백업 ( 2.b)을 만들 거나 백업 바이 패스 방법 ( 2.c)을 사용하지 않으면 협력하지 않습니다 . GNU 버전은이를 요구하지 않습니다. 망설이지 않고 기존 파일을 파괴적으로 편집하고 덮어 씁니다.
목소리

4

있음 sed -h:

  -i[SUFFIX], --in-place[=SUFFIX]
             edit files in place (makes backup if SUFFIX supplied)

'파일 자체에서 작업을 수행하십시오.' 절대입니다.

그리고 man말했다 : 'Sed의는 스트림 편집기입니다. 스트림 편집기는 입력 스트림 (파일 또는 파이프 라인의 입력)에서 기본 텍스트 변환을 수행하는 데 사용됩니다. '

당신의 질문으로

sed -i '1d' file_name

의미 : 파일의 첫 번째 줄을 삭제 하고 파일 "file_name"로 백업하십시오. (파일 편집과 마찬가지로 첫 번째 줄을 직접 삭제하십시오.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.